Я изучаю Rails уже около 6 недель, так что все еще нуб!
Я слежу за скринкастом Райана Бейтса о полиморфных ассоциациях, но получаю сообщение об ошибке «Нет совпадений маршрутов» при переходе к /model/xx/comments.
После двух дней хождения по кругу с этим я в полном тупике — кажется, все на месте.
Модель комментариев:
create_table "comments", :force => true do |t|
t.text "content"
t.integer "user_id"
t.integer "commentable_id"
t.string "commentable_type"
t.datetime "created_at"
t.datetime "updated_at"
end
Класс комментариев:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
Другие модели класса:
class ModelName < ActiveRecord::Base
has_many :comments, :as => :commentable
end
Маршруты.рб
resources :modelname, :has_many => :comments
comments_controller.rb
def index
@commentable = find_commentable
@comments = @commentable.comments
end
private
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
Все это согласно учебнику, но, тем не менее, возвращает «нет совпадений маршрута».
Я пробовал альтернативное форматирование маршрутов как вложенных ресурсов.
resources :modelname do |modelname|
modelname.resources :comments
end
Явное определение комментариев в route.rb
resources :comments
И различные комбинации терминов в route.rb
resources :modelname, :has_many => :commentables
or
resources :modelname, :has_many => :comments
or
resources :modelname, :has_many => :comments, :through => :commentable
все безуспешно.
кто-нибудь еще сталкивался с этим? Я потерялся, где начать искать.
Большое спасибо