人的正常形式将是这样的
<%= form_for @person do |f|%>
<%= name... %>
<%= age...%>
<%= submit...%>
<% end %>
现在我想动态设置表单对象,从下拉列表中选择,比如
<%= select_tag "team",
options_from_collection_for_select(@team,
"id","person_name") %>
<%= form_for @person_choose_from_above do |f|%>
<%= name... %>
<%= age...%>
<%= submit...%>
<% end %>
如何实现这一目标?提前谢谢。
答案 0 :(得分:0)
你可以这样使用
在您的有效记录
上创建一个枚举class ClassName < ActiveRecord::Base
enum team: [:hot, :medium, :cold];
然后在您的视图中使用此
<%= f.label :team %>
<%= f.select :team, ClassName.team.keys %>
答案 1 :(得分:0)
我会这样做:在团队选择重新加载页面,传递所选选项的参数,然后重新初始化该人的对象。
查看:
<%= form_tag("/url", method: "get") do %>
<%= select_tag "team",
options_from_collection_for_select(@team,
"id","person_name"), name: 'team' %>
<%= submit_tag("Search"), class: 'fake-submit', style: 'display: none;' %>
<% end %>
<% person = params[:team].present? ? Person.find(params[:team]) : Person.new %>
<%= form_for (person) do |f|%>
<%= name... %>
<%= age...%>
<%= submit...%>
<% end %>
使用Javascript:
$('select').on 'change', ->
$('.fake-submit').click()