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

routes.rb 内

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

しかし、読み込み時にルーティング エラーが発生しますquestion/new.html.haml。またrake routes、指定された正しいURLを取得しました。なぜこのエラーが発生するのですか?

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 => {:action => "create"}, :html => {:method => "post"} ) do |f|

そして、routes.rb を次のように編集します。

routes.rb 内

resources :questions do
   member do
     get :add_comment
   end
end
于 2013-02-12T12:45:54.450 に答える
0

やってみました:

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

questions_pathから自動的に生成されroutes.rbます。これらは を実行して列挙できます。これにより、またはrake routesで呼び出すことができる利用可能なルートが表示されます。route_pathroute_url

HTH

于 2013-02-12T12:35:46.687 に答える