Rails 4 select_tag,空白并选中

时间:2015-05-21 22:53:44

标签: forms ruby-on-rails-4

我正在尝试在Rails 4中创建一个select html元素,但我无法同时获得我想要的所有内容。

我有一个控制器,其路线为/rule_search,其中包含:

def index
  # RuleType is an AR model and only has the columns `id` and `name`
  @rule_types = RuleType.all

  # I would like to be able to access a param such as the below example when the form is submitted
  @rule_type_id = params[:rule_type_id]
end

我有一个名为index.html.erb的视图,我有一个表单。

<h2>Rule Search</h2>
<%= form_tag("/rule_search", method: "post") do %>
<table>
  <tr>
    <td>Rule Type</td>
    <td><%= # Select Element Goes Here %></td>
  </tr>
  <tr>
    <td><%= label_tag(:name, "Search for:") %></td>
    <td><%= text_field_tag(:name, @name) %></td>
  </tr>
</table>

我希望select元素上有一个空白值,即使用户之前选择了实际值,也总是可以选择。 “无”选项而不是提示。

我希望上一个表单提交中的选定值保留在select元素上。

我想使用form_tag而不是form_for,因为我没有尝试使用此表单创建AR对象。我只是想创建一个简单的select元素,它持久保存自己的选择,并将其值提交给控制器,并使用表单的其余部分。

1 个答案:

答案 0 :(得分:0)

这应该是你需要的。 Rails也可能有一个简单的语法,但这应该做你想要的。

<tr>
<td>Rule Type</td>
<td>
    <select>
       <% @rule_types.each do |rule| %>
           <option><%= rule %></option>
       <% end %>
    </select>
</td>
</tr>