2014-07-13 33 views
0

控制器Rails的选择助手设置默认值

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,默认值在这里),还有:selected => VALUE在不同的地方,没有结果。请帮助

+0

尝试'<%= f.select(:parent_id,options_for_select(@ parents,@ parents.project_id))%>' – Pavan

+1

[Rails select helper - Default selected value,how?](http:// stackoverflow.com/questions/623458/rails-select-helper-default-selected-value-how) – Pavan

+0

我已经检查过,你的不工作。我需要绑定该列表与当前文件夹parent_id值 – user3581552

回答

0

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

@folder.parent_id = 23 # the default value 
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 %> 

此外,在form_tag指定URL如果你使用REST风格的路线是多余的。