2015-06-29 3 views
1

В моем Rails 4.2.1 приложения, которое я Posts и Comments (которые вложены в Posts):Передача параметров в Rails частичного

# config/routes.rb 

    resources :posts do 
     resources :comments 
    end 

У меня есть следующие частичные Комментарии:

# app/views/comments/_comment.html.erb 

    <%= comment.body %> 

I пытается сделать это частичным с точностью до Posts:

# app/views/posts/show.html.erb 

    <% @comments.each do |comment| %> 
    <%= render 'comments/comment', :locals => { :comment => comment } %> 
    <% end %> 

Проблема в том, что я получаю неопределенную локальную переменную или метод «комментарий» ошибка при попытке отображения частичного.

Я довольно новичок в Rails, но мне кажется, что я передаю переменную comment на частичную правильно. Мне что-то не хватает?

Благодаря

Update

Я смотрел в неправильном месте в документации. См http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

enter image description here

+1

'# app/views/comments/_form.html.erb' был ли это опечаткой? –

+0

Да ... извините, исправлена ​​опечатка. – RobertJoseph

ответ

6

Либо добавить в partial

<%= render partial: 'comments/comment', :locals => { :comment => comment } %> 

Или делают коллекцию: Это делает его по рельсам, используя название модели

<%= render @comments %> 

Или явно

<%= render partial: 'comments/comment', collection: @comments %> 
0

Передача переменных через locals hash не поддерживается в сокращенном синтаксисе рендеринга частичного. В этом случае вы можете использовать этот код:

<%= render 'comments/comment', :comment => comment %> 
0

Попробуйте метод коротких рук для частичного воспроизведения. Это более предпочтительно, так как вам не нужно указывать другие параметры.

<%= render 'comments/comment', { :comment => comment } %> 

Прочтите этот URL, чтобы узнать больше; http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html

Смежные вопросы