fields_for导致过滤器链停止错误

时间:2012-05-24 20:53:36

标签: ruby-on-rails

我正在尝试为事件记录创建一个新的EventPlace。我在我的视图中将事件设置为accepts_nested_attributes_for:event_places和以下代码:

<div id="add_venue_form" style="border:2px solid black; padding: 5px;">
<% form_for @event, :html => {:name => "form2"} do |f| -%>
    <% f.fields_for @event_place do |v| -%>
      <%= v.text_field :place_id %>
    <% end -%>
    <a class="button" style="margin-left:10px;margin-top:4px;" href="javascript:document.form2.submit();" onclick="this.blur();"><span>Save</span></a>

<% end -%>

当我在字段中添加ID号并单击“保存”按钮时,它会显示以下错误:

Processing EventController#update (for 127.0.0.1 at 2012-05-24 15:43:39) [PUT]
Parameters: {"id"=>"48404", "action"=>"update", "controller"=>"event", 
    "_method"=>"put", "event"=>{"event_place"=>{"place_id"=>"3"}}}
SQL (0.1ms)   SET NAMES UTF8
Redirected to http://localhost:3001/event/list
Filter chain halted as [#<Proc:0x00000001094746e0@/Users/anthonylassiter/.rbenv/versions/ree-1.8.7 2012.02/lib/ruby/gems/1.8/gems/actionpack-2.3.10/lib/action_controller/verification.rb:82>] rendered_or_redirected.
Completed in 8ms (DB: 0) | 302 Found [http://localhost/events/48404]

我的更新方法

 def update
     @event = Event.find(params[:id])
     if @event.update_attributes(params[:event])
       redirect_to index
     end
 end

看起来这些参数是正确的。它甚至没有在我的event_controller上点击我的更新方法,而是导致一些内部错误并尝试重定向到/ list不存在,但是如果Update正常工作我就不应该这样做。

2 个答案:

答案 0 :(得分:1)

参数不正确,r event_places_attributes必须在你的参数中...尝试@event.event_places.build并在fields_for中使用:event_places

答案 1 :(得分:1)

您的控制器(或其中一个超类)中的某个位置使用verify来限制可以发出的请求(或者您正在使用的插件可能称为验证)。记录的请求失败了其中一个验证步骤,因此rails改为重定向它。