Проблема в том, что ваш маршрут для сгенерированной формы идет к /posts/:post_id/comments
, который является маршрутом, определенным в вашем приложении , но не в вашем движке . Ваш двигатель определяет только этот маршрут:
resources :comments
Это (почти) работает, потому что движок видит, что у приложения есть маршрут, который соответствует CommentsController
, просто нет CommentsController
для него доступа.
Я скачал приложение с GitHub, поиграл и изменил form_for
в app/views/kurakani/comments/_form.html.erb
на следующее:
form_for(Kurakani::Comment.new, :url => kurakani.comments_path)
Этот тест проходит успешно, но я не уверен, что он действительно даст вам то, что вы хотите. Возможно, вы захотите поиграть с этим URL-адресом самостоятельно.
Здесь происходит то, что это представление отображается основным приложением с помощью помощника kurakani_list
в spec/dummy/app/posts/show.html.erb
, что означает, что любой помощник URL, на который вы ссылаетесь (прямо или косвенно), будет указывать на приложение а не к двигателю, как я думаю, вы хотите.
Таким образом, чтобы сообщить Rails, каков истинный маршрут, по которому мы хотим, чтобы наша форма шла, мы должны указать параметр :url
и сказать, что мы хотим перейти к kurakani.comments_path
, а не comments_path
, который может быть определен приложением.
Если бы мы хотели сделать обратное (ссылаться на маршрут приложения из движка), мы бы использовали main_app
вместо kurakani
.