Rails选择帮助程序设置默认值

时间:2014-07-13 19:24:28

标签: ruby-on-rails ruby select html-helper

控制器

def edit
@folder = Folder.find(params[:id])
@parents = Folder.all.where(:user_id => current_user).map{|u| [ u.name, u.id ]}
end

查看

<%= form_for(:folder, :url => {:action => 'update', :id => @folder.id}) do |f| %>

    <table summary="Folder form fields">
      <tr>
        <th>Name</th>
        <td><%= f.text_field(:name) %></td>
      </tr>
      <tr>
        <th>Parent folder:</th>
        <td>
        <%= f.select(:parent_id, options_for_select(@parents) )%></td>
      </tr>
</table>...

如何使用文件夹的parent_id在select helper中设置默认值? 我已经尝试过options_for_select(@parents,DEFAULT VALUE HERE),还有:selected =&gt; VALUE在不同的地方,没有结果。请帮忙

2 个答案:

答案 0 :(得分:1)

如果将文件夹对象传递给form_tag,则Rails应自动计算出默认值。您也不需要使用options_for_select,因为select表单助手会获取一系列选项。

<%= form_for(@folder, :url => {:action => 'update', :id => @folder.id}) do |f| %>
  <%= f.select(:parent_id, @parents) %>
<% end %>

另外,如果使用RESTful路由,则在form_tag中指定URL是多余的。

答案 1 :(得分:0)

在form_for中,默认值是分配给构建表单的对象的值。这意味着如果您希望select默认为某个值,则需要将控制器中的parent_id属性设置为该值。

@folder.parent_id = 23 # the default value