У меня есть Должности модель, которая имеет много сообщений на многих Языки. Это немного нестандартное, но для иллюстрации:Rails 3, комментарии во вложенной форме, неправильные маршруты?
class Post < ActiveRecord::Base
has_one :eng_post, :dependent => :destroy # <-- HAS_ONE!
accepts_nested_attributes_for :eng_post, :allow_destroy => true
end
I.e. Почта имеет один EngPost. В то время как EngPost определяется в модели как:
class EngPost < ActiveRecord::Base
belongs_to :post
has_many :eng_comments, :dependent => :destroy
accepts_nested_attributes_for :eng_comments, :allow_destroy => true
attr_accessible :eng_comments_attributes
end
И, наконец, модель eng_comments является:
class EngComment < ActiveRecord::Base
belongs_to :eng_post, :foreign_key => "eng_post_id"
end
routes.rb определяет:
resources :posts do
resource :eng_posts
end
resource :eng_post do
resources :eng_comments
end
resources :eng_comments
Проблема - не может сделайте сообщение с eng_comments, я попробовал:
<% form_for ([@post, @post.eng_post, @post.eng_post.eng_comments.build]) do |f| %>
и попробовал:
<% form_for @comment do |f| %>
Это приводит к ошибке
undefined method `post_eng_post_eng_comments_path' for #<#<Class:0x000000067de2a8>:0x000000067c4498>
Спасибо.
Робин, спасибо за ваш ответ. Но единственный способ сделать это - это <% form_for ([@post, @ post.eng_post, @ post.eng_post.eng_comments.build]) do | f | %>. Тем не менее форма комментариев не отображается, а вывод отладки ---! Ruby/object: EngComment атрибуты: id: !!нуль eng_post_id: 97 full_name: !! нуль сайт: !! пустой электронная почта: !! нулевой комментарий: !! пустой created_at: !! нуль updated_at: !! нулевой – valk
К сожалению, ваше предложение работает, после добавления Ресурсы: eng_posts do Ресурсы: eng_comments end – valk
Я также редактировал свое сообщение, чтобы дать вам предложение по вашей форме. – Robin