javascript - Rails - 从表单选择下拉列表中将参数传递给控制器
问题描述
我有 2 个模型:Team
和Quest
. 创建新团队时,我有一个所有任务的下拉列表。选择任务后,我想显示有关该任务的信息。
我的理解是表单中的所有内容都在客户端,并且需要 AJAX 将所选任务传递到服务器端。我的代码基于这个Stack Overflow 答案。
这是我构建表单的方式:
应用程序/视图/teams_form.html.erb
<%= form_for(@team) do |f| %>
<fieldset>
<ol>
<li>
<%= f.label :name %>
<%= f.text_field :name %>
</li>
<li>
<%= f.label :quest_id %>
<%= f.select :quest_id,
options_from_collection_for_select(@quests, :id, :name),
{}, {remote: true, url: '/teams/new', method: 'get'} %>
</li>
<% if @x != nil && @x.id != nil %>
<li><%= @x.id %></li>
<% end %>
</ol>
<p>
<%= f.submit %>
</p>
</fieldset>
<% end %>
应用程序/控制器/team_controller.rb
def new
@team = Team.new
@quests = Quest.all
respond_to do |format|
if params[:quest_id] != nil
@x = Quest.find(params[:quest_id])
end
format.html #new.html.erb
format.json
format.js
end
end
我的目标是将:quest_id
参数从表单传递给@x
变量并在表单中使用它。
这没有产生任何结果。我没有在控制器中获取参数,我不确定我错过了什么。
解决方案
根据共享的描述,您似乎无法从下拉列表中获取所选项目的值。
下面提到的代码用于从下拉列表中选择值,您也可以使用浏览器的开发人员工具检查相同的值。
quest = $("#quest_id").val();
注意:假设选择器 id 是 quest_id,请根据您的表单进行更改。
现在,您可以使用下面提到的代码调用 ajax。
$.ajax({
type: "GET",
url: "/teams/new",
data:{ quest_id: quest },
dataType: "json",
success:function(data){
# logic for using ajax result
}
希望能帮助到你!!
推荐阅读
- python-3.x - Micro Logix 1400 PLC 的 Pycomm3 write_tag(tag,value) 问题
- logging - Log4j2 停止/关闭路由附加程序中的 FileManager
- sql-server - 查询中使用的字符串始终使用 NVARCHAR 语法发送,即使基础列不是 unicode
- dictionary - Clojure:将具有关键字键的映射转换为具有等效字符串键的映射
- javascript - 如何使用映射或按 ID 过滤在嵌套数组中获取值
- flask - TemplateSyntaxError: Encountered unknown tag 'endblock'
- android - JSON (POJO) model response
- javascript - Hapi.js user authentication with mongodb issue
- python - 优化旋转和填充
- java - 我需要在每个新的输入流上调用 close() 吗?