1

投稿コントローラー内のコメントコントローラーから_new.html.erbを部分的にレンダリングしようとしています。

コメントリソースは投稿リソースにネストされています

ルート.rb

  resources :users, :only => [:show, :create, :new]

  resources :posts do
    resources :comments
    resources :memorybooks
  end

  root to: 'static_pages#home'

  match '/channel',    to: 'static_pages#channel'
  match 'login', to: 'static_pages#login'
  match '/posts', to: 'posts#new'
  match '/users', to: 'users#new'

コメントコントローラーの_new.html.erb部分:

   <%= form_for([@post, @comment]) do |f| %>

      <%= f.label :comment %>
      <%= f.text_field :comment %>

      <p>
      <center>
      <%= f.submit "Submit", class: "btn btn-large btn-primary" %>
      </center>
    <% end %>

私のコメントコントローラーメソッド:

def create
@post = Post.find_by_id(params[:id])
@comment = @post.comments.build(params[:comment])
    if @comment.save
    redirect_to @current_post
else
    render '/'
end
end

私のshow.html.erbファイルで、次を使用すると:

<%= render 'comments/new' %>

_new部分フォームが表示されますが、投稿するとエラーが発生します。

No route matches [POST] "/comments"

そして、show.html.erbで次の行を使用すると

<%= render new_post_comment %>

エラーが発生します:

undefined local variable or method `new_post_comment'

以下は私のレーキルートです

               users POST   /users(.:format)                               users#create
            new_user GET    /users/new(.:format)                           users#new
                user GET    /users/:id(.:format)                           users#show
       post_comments GET    /posts/:post_id/comments(.:format)             comments#index
                     POST   /posts/:post_id/comments(.:format)             comments#create
    new_post_comment GET    /posts/:post_id/comments/new(.:format)         comments#new
   edit_post_comment GET    /posts/:post_id/comments/:id/edit(.:format)    comments#edit
        post_comment GET    /posts/:post_id/comments/:id(.:format)         comments#show
                     PUT    /posts/:post_id/comments/:id(.:format)         comments#update
                     DELETE /posts/:post_id/comments/:id(.:format)         comments#destroy
    post_memorybooks GET    /posts/:post_id/memorybooks(.:format)          memorybooks#index
                     POST   /posts/:post_id/memorybooks(.:format)          memorybooks#create
 new_post_memorybook GET    /posts/:post_id/memorybooks/new(.:format)      memorybooks#new
edit_post_memorybook GET    /posts/:post_id/memorybooks/:id/edit(.:format) memorybooks#edit
     post_memorybook GET    /posts/:post_id/memorybooks/:id(.:format)      memorybooks#show
                     PUT    /posts/:post_id/memorybooks/:id(.:format)      memorybooks#update
                     DELETE /posts/:post_id/memorybooks/:id(.:format)      memorybooks#destroy
               posts GET    /posts(.:format)                               posts#index
                     POST   /posts(.:format)                               posts#create
            new_post GET    /posts/new(.:format)                           posts#new
           edit_post GET    /posts/:id/edit(.:format)                      posts#edit
                post GET    /posts/:id(.:format)                           posts#show
                     PUT    /posts/:id(.:format)                           posts#update
                     DELETE /posts/:id(.:format)                           posts#destroy
                root        /                                              static_pages#home
             channel        /channel(.:format)                             static_pages#channel
               login        /login(.:format)                               static_pages#login
                            /posts(.:format)                               posts#new
                            /users(.:format)                               users#new

どんな助けでもいただければ幸いです!ありがとうございました!

4

1 に答える 1

1

これを試して

<%= render new_post_comment(@post, @comment) %>

お役に立てば幸いです。

于 2012-11-23T10:51:06.723 に答える