Bri*_*ong 11 ruby-on-rails ruby-on-rails-3
我正在使用fields_for
我的形式
<%= form_for @user %>
...
<%= f.fields_for :photos do |f2| %>
<%= f2.radio_button :public, 'true' %>
<% end %>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
以下是它生成的单选按钮:
<input id="user_photos_attributes_0_public_true" name="user[photos_attributes][0][public]" type="radio" value="true" />
<input id="user_photos_attributes_0_id" name="user[photos_attributes][0][id]" type="hidden" value="1" />
<input id="user_photos_attributes_1_public_true" name="user[photos_attributes][1][public]" type="radio" value="true" />
<input id="user_photos_attributes_1_id" name="user[photos_attributes][1][id]" type="hidden" value="4" />
<input id="user_photos_attributes_2_public_true" name="user[photos_attributes][2][public]" type="radio" value="true" />
<input id="user_photos_attributes_2_id" name="user[photos_attributes][2][id]" type="hidden" value="5" />
...
Run Code Online (Sandbox Code Playgroud)
我在user.rb中有这个
has_many :photos
accepts_nested_attributes_for :photos
Run Code Online (Sandbox Code Playgroud)
提交表单时,我收到此错误:
Error during failsafe response: ActionView::Template::Error
TypeError (expected Hash (got Array) for param `photos_attributes'):
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
顺便说一下,我正在使用Rails 3.0.0.rc2
你如何保存你的模型?
如果你检查params
哈希值,你会得到类似的信息:
{ :user => {:photo_attributes => [{:id => 1, :public => true}, {:id => 4, :public => false}] }, :your_other_params => ... }}
Run Code Online (Sandbox Code Playgroud)
所以 aUser.new(params[:user]).save
应该可以工作。除非您传递属性的每个散列而不是数组。如果您需要更深入的详细信息,请参阅这篇文章。
你的哈希值里有什么params
?这将帮助您追踪问题。
顺便说一句,如果您想要“真/假”行为(我假设是由于属性is_public
),而不是“存在/不存在”,则应使用复选框。单选按钮用于互斥的选项。
归档时间: |
|
查看次数: |
6676 次 |
最近记录: |