0

我正在尝试添加或删除嵌套的 has_many 对象,如下所示

class Question < ActiveRecord::Base
  has_many :comments
end

= form_for @question, :url => {:action => "create"} do |f|
  = f.label :name
  = f.text_field :name
  #comments
  = link_to 'Add Comment", add_comment_question_path, method: :get
  = f.submit

:javascript

  $('#add_comment').click(function() {
    $('#comments').append("#{escape_javascript(render(:partial => "comment"))}");
  });

在我的 _comment.html.haml

= fields_for @question.comments do |c|
  = c.label :msg
  = c.text_field :msg

在我的控制器中

def add_comment
   @question.comments << Comment.new
end

在路线.rb

resources :questions do
  get :add_comment, :on => :member
end

但是我在加载时遇到路由错误question/new.html.haml。我也跑来rake routes获取正确的指定网址。为什么我会收到此错误?

4

3 回答 3

1

我假设错误在add_comment_question_path. 这个命名路由需要一个问题资源来传递给它,比如add_comment_question_path(@question). 但这仍然不适用于您的情况,因为您正在尝试以@question相同的形式创建。

于 2013-02-12T12:39:22.413 回答
0

你有没有尝试过:

= form_for @question, :url => questions_path do |f|

questions_path应该是自动生成的routes.rb。这些可以通过 running 枚举rake routes,它显示可用的路由,然后可以用route_path或调用route_url

高温高压

于 2013-02-12T12:35:46.687 回答
0

尝试添加方法发布:

form_for(@question, :url => {:action => "create"}, :html => {:method => "post"} ) do |f|

并将 routes.rb 编辑为:

在路线.rb

resources :questions do
   member do
     get :add_comment
   end
end
于 2013-02-12T12:45:54.450 回答