визуализировать вложенный частичный для новой формы

Я пытаюсь отобразить партиал _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

Любая помощь будет оценена по достоинству! Спасибо!


person user749798    schedule 13.05.2012    source источник
comment
вероятно, @post равен нулю при рендеринге частичного. Я предполагаю, что HTML-вывод продуктов/шоу отображает новую форму комментария с действием/комментариями, верно?   -  person Cristian Bica    schedule 14.05.2012
comment
да, исходный код показывает /комментарии.   -  person user749798    schedule 14.05.2012
comment
как вы присваиваете значения @post, @comment?   -  person Cristian Bica    schedule 14.05.2012
comment
не уверен, что вы имеете в виду... пользователи делают новые сообщения, которые затем получают идентификатор сообщения. Когда я нахожусь в URL-адресе сообщения, я получаю текущую информацию о сообщении с помощью @post = Post.find_by_id(params[:id])... теперь я пытаюсь опубликовать комментарий к этому сообщению...   -  person user749798    schedule 14.05.2012
comment
Вы должны убедиться, что вы заполнили @post. Добавьте ‹%[email protected] %› и ‹%[email protected] %› в комментарии/_new и посмотрите, что отображается в браузере.   -  person Cristian Bica    schedule 14.05.2012
comment
ты прав. когда он назван post, он возвращает nil, но если я назову его как-то иначе, например, current_post, он вернет объект. с чего бы это?   -  person user749798    schedule 14.05.2012
comment
добрался до ошибки сейчас. Спасибо за помощь!!   -  person user749798    schedule 14.05.2012


Ответы (1)


попробуй это

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

Надеюсь, это поможет вам.

person rfellons    schedule 23.11.2012