【发布时间】:2014-10-31 13:46:32
【问题描述】:
我有一个简单的设置:
class EventsController < ApplicationController
def edit
@user = User.find(params[:user_id])
@event = Event.find(params[:id])
end
end
事件\edit.html.erb:
<h1>Edit <%= @user.name %>'s event</h1>
<%= render 'form' %>
事件\_form.html.erb:
<%= form_for [@user, @event] do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :description %>
<%= f.text_area :description %>
<%= f.submit %>
<% end %>
令我最惊讶的是,这段代码可以正常工作,而且我没有收到任何错误。表单部分知道@user 和@event! 我一直认为我必须将参数作为局部变量传递才能在部分中访问它们,因此视图的渲染必须是:
<%= render 'form', user: @user, event: @event %>
form_for 行应该改为:
<%= form_for [user, event] do |f| %>
我在这里遗漏了什么吗?是不是有一天我把自己搞糊涂了以至于我应该好好睡一觉了?
我在 Rails 4.1.4 上运行它,如果发生任何变化,事件是用户的嵌套资源。
【问题讨论】:
标签: ruby-on-rails partials renderpartial