0

routes.rbにこの設定があります:

resources :users do
  resources :images do
    resources :comments
  end
end

ImagesControllerからshowアクションをロードすると、テンプレート ファイルには次のように表示されます。

...
= render 'comments/form', :@comment => @image.comments.new
...

そしてコメント/フォームファイルは次のとおりです。

= form_for [@comment.commentable, @comment] do |f|
  .field
    = f.text_field :body
  .actions
    = f.submit 'Comment'

そしてショーアクション:

def show
    @user = User.find(params[:user_id])
    @image = @user.images.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @image }
    end
  end

しかし、このページをブラウザにロードすると、次のエラーが発生します。

undefined method `image_comments_path' for #<#<Class:0x007feb48488128>:0x007feb48399668>

Rails がこのエラー メッセージを返すのはなぜですか?

4

2 に答える 2

0

あなたのショーメソッドでは、

def show
  @user = User.find(params[:user_id])
  @image = @user.images.find(params[:id])

  ## Add this line:
  @comment = @image.comments.build 

  respond_to do |format|
    format.html # show.html.erb
    format.json { render :json => @image }
  end
end

テンプレートで、テンプレートをレンダリングしている場合、

= render "comments/form", :locals => { :comment => @comment } %>

comments/form次のように書いてください:

= form_for comment do |f|
 .field
   = f.text_field :body
 .actions
   = f.submit 'Comment'

それはうまくいくはずです。ありがとう

于 2013-08-08T11:47:43.673 に答える
0

ターミナルを開いて入力rake routesし、アプリで利用可能な適切なルートを表示します

于 2013-08-08T11:42:59.377 に答える