В Rails 3 предполагается, что form_for автоматически знает, когда именованные помощники модели переопределяются? - PullRequest
0 голосов
/ 03 марта 2011

В моем файле маршрутов у меня есть:

resources :features, :as => 'featured'

Однако, когда я использую следующее:

<% form_for @feature, :html => { :multipart => true } do |f| -%>
<%= render :partial => "form", :locals => { :f => f } -%>
<p><%= submit_tag "Feature these submissions" -%></p>
<% end -%>

Я получаю эту ошибку:

"неопределенный метод`features_path 'для # <#: 0x00000106228ec0>"

Это мой "новый" метод в "features_controller":

  def new
    @feature = Feature.new
    @submissions = Submission.find(pending_featured_submissions)
  end

До того, как я обновился до Rails 3, Rails смогвыяснить, что я использовал пользовательский помощник с именем.Теперь создается впечатление, что form_for игнорирует строку в моем файле ресурсов и использует feature_path, когда его следует использовать featured_path.

Может быть, я что-то делаю неправильно или что-то пропустил.

Спасибодля поиска =)

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Для чего это стоило, мне пришлось указать URL в конструкторе форм.

<% form_for @feature, :url => featured_index_path, :html => { :multipart => true } do |f| %>
0 голосов
/ 30 декабря 2012

Вы используете submit_tag. Если вы использовали объект формы для отправки, тогда ваш путь будет таким, как определено в form_for, поэтому вместо

<% form_for @feature, :html => { :multipart => true } do |f| -%>
  <%= render :partial => "form", :locals => { :f => f } -%>
  <p><%= submit_tag "Feature these submissions" -%></p>
<% end -%>

вы должны использовать

<%= form_for @feature, :html => { :multipart => true } do |f| -%> //Note the = sign
  <%= render :partial => "form", :locals => { :f => f } -%>
  <p><%= f.submit "Feature these submissions" -%></p>
<% end -%>

Обратите внимание: поскольку вы находитесь в Rails 3, а не в Rails 2, вы должны использовать символ = в объявлении формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...