Ruby on rails - 正确使用"form_for",使用 :url 参数,或者我可以直接放置 :action 吗?



我很难理解下面两条线的区别。唯一的区别是 :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

怕你的问题的答案是否定的。

:action不是form_for识别的选项参数。

下面是 API:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for

:url是它识别的选项,它本身包括一个选项哈希,其中包括:action

我希望这有所帮助。

相关内容

  • 没有找到相关文章

最新更新