Rails:如何动态设置表单对象?

时间:2016-10-28 06:03:13

标签: ruby-on-rails

人的正常形式将是这样的

<%= 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 %>

如何实现这一目标?提前谢谢。

2 个答案:

答案 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()