我很难理解下面两行的区别。唯一的区别是:url =>的用法
1-在我看来,以下行正在生成错误(删除 form_for 会删除错误并且渲染完成且没有错误):
<%= form_for( [@company, @appointment], :action => 'company_edit', :html => {:class => "form-horizontal"}) do |f| %>
我花了很多时间试图弄明白这个错误,但我不知道“company_edit”是从哪里来的。
ActionView::Template::Error (undefined method `company_appointment_path' for #<#<Class:0x5047cc8>:0x5045070>):
9: </div>
10: <div class="widget-content nopadding">
11: <!--form action="#" method="get" class="form-horizontal"-->
12: <%= form_for([@company, @appointment], :action => 'company_edit', :html => {:class => "form-horizontal"}) do |f| %>
13: <% if @appointment.errors.any? %>
14: <div class="control-group">
15: <div id="error_explanation">
app/views/appointments/company_edit.html.erb:12:in `_app_views_appointments_company_edit_html_erb___287242072_42128364'
这是我的路线文件的片段:
resources :companies do
resources :appointments, only: [:company_edit] do
member do
get 'company_edit', :as => :company_edit
end
end
end
2-我发现使用 :url 后,一切都恢复了,但为什么呢?
<%= form_for([@company, @appointment], :url => {:action => 'company_edit'}, :html => {:class => "form-horizontal"}) do |f| %>
我试图理解这一点,因为我在很多地方都使用过 'form_for' 而我之前从未使用过 ':url =>' 并且我想知道我是否没有正确使用 'form_for' 并且我现在需要更新我的正确使用帮助程序的代码。
编辑
这是我的控制器:
def company_edit
@appointment = Appointment.find(params[:id])
@company = Company.find(params[:company_id])
end