【发布时间】:2014-07-12 15:28:23
【问题描述】:
我遇到了重复 Rails 表单代码的问题。当我将它们放在一个部分时,它们会抛出 NoMethodError,我无法弄清楚如何使它们变得更干燥。
admin/exam_centers/edit.html.erb =>
<%= simple_form_for(@exam_center, url: admin_exam_center_path(@exam_center)) do |f| %>
<%= f.input :city_id, collection:City.all, label: 'Şehir Seçiniz', label_method: :name %>
<%= f.input :address, label: 'Adres' %>
<%= f.input :building, label: 'Bina' %>
<%= f.button :submit, "Kaydet", :class => "btn btn-info" %>
<% end %>
注意:admin_exam_center_path(@exam_center)
admin/exam_centers/new.html.erb =>
<%= simple_form_for(@exam_center, url: admin_exam_centers_path(@exam_center)) do |f| %>
<%= f.input :city_id, collection:City.all, label: 'Şehir Seçiniz', label_method: :name %>
<%= f.input :address, label: 'Adres' %>
<%= f.input :building, label: 'Bina' %>
<%= f.button :submit, "Kaydet", :class => "btn btn-info" %>
<% end %>
注意:admin_exam_centers_path(@exam_center)
他们像这样完美地工作。但是当我将它们放在部分中时,如下所示,new.html.erb 页面抛出“未定义方法exam_centers_path”错误,而edit.html.erb 页面抛出“未定义方法exam_center_path”错误。我怎样才能使这些表格 DRYer?
_form.html.erb =>
<%= simple_form_for(@exam_center) do |f| %>
<%= f.input :city_id, collection:City.all, label: 'Şehir Seçiniz', label_method: :name %>
<%= f.input :address, label: 'Adres' %>
<%= f.input :building, label: 'Bina' %>
<%= f.button :submit, "Kaydet", :class => "btn btn-info" %>
<% end %>
edit.html.erb =>
<%= render 'admin/exam_centers/form' %>
new.html.erb =>
<%= render 'admin/exam_centers/form' %>
顺便说一下,路由文件 =>
namespace :admin do
resources :exam_centers, except: :show
resources :exam_languages, except: :show
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4