【问题标题】:Rails select helper setting default valueRails 选择助手设置默认值
【发布时间】:2014-07-13 19:24:28
【问题描述】:

控制器

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 在选择助手中设置默认值? 我试过 options_for_select(@parents, DEFAULT VALUE HERE) ,也 :selected => VALUE 在不同的地方,没有结果。请帮忙

【问题讨论】:

  • 试试&lt;%= f.select(:parent_id, options_for_select(@parents,@parents.project_id) )%&gt;
  • 我已经检查过了,你的不行。我需要将该列表与当前文件夹 parent_id 值绑定
  • 这个&lt;%= f.select(:parent_id, options_for_select(@parents),:selected =&gt; f.object.parent_id) %&gt;?
  • Pavan 你是那个总是给出没有帮助的建议的人)))你自己测试过吗?))))

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


【解决方案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 是多余的。

【讨论】:

    【解决方案2】:

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

    @folder.parent_id = 23 # the default value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多