Можно ли иметь несколько частей для записи?

У меня есть таблицы отзывов, мест и пользователей.

В настоящее время у меня есть партиал _review.html.erb, который отображает отзывы о месте проведения на странице шоу мест проведения.

Возможно ли иметь еще один частичный файл с именем _profile_review.html.erb и отображать все отзывы, написанные пользователем, на странице отображения пользователей?

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

Большое спасибо за любую помощь, это очень ценится!


person Dave    schedule 15.06.2011    source источник


Ответы (1)


Знаете ли вы, что вы можете передавать любые переменные в партиал, используя опцию :locals?

render :partial => "whatever", :locals => {:foo => bar}
# bar is available as local variable foo within _whatever.erb

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

- optional_variable ||= nil # defines optional_variable without overwriting it

Я думаю, что с помощью этого вы сможете делать все, что можете себе представить :).

person reto    schedule 15.06.2011
comment
@retro, спасибо за ответ, эта ссылка очень помогает, но я не понимаю, почему этот кусок кода не работает: ‹%= render :partial =› 'reviews/review', :collection =› @user.reviews, : locals =› { :review =› profiles } %› Я думал, что он отобразит частичный файл с именем _profile, но он выдает неопределенную локальную переменную или ошибку метода `profiles - person Dave; 16.06.2011
comment
Я никогда не использую @collection, так как это слишком волшебно. Я предлагаю вам вместо этого сделать <% @user.reviews.each do |review| %><%= render "reviews/review", :profile => review %><% end %>. - person Matthew Rudy; 16.06.2011
comment
вы заметите, что это другой синтаксис, указывающий путь к партиалу и любые локальные переменные в качестве следующего аргумента. Для аргумента :locals вы указываете имя переменной, а затем значение. - person Matthew Rudy; 16.06.2011
comment
Кстати. взгляните на haml .. :) это намного веселее (или меньше боли) - person reto; 16.06.2011
comment
@Matthew Rudy, спасибо за ответ, он все еще пытается отобразить партиал _review, однако, изменив его на ‹%= render review/profile %›, визуализирует партиал _profile для каждой записи обзора, но дает неопределенную локальную переменную или метод `review' ошибка при вводе чего-то вроде ‹%= review.title %› в партиал _profile - person Dave; 16.06.2011
comment
если вы используете стиль, как я показал, `‹%= визуализировать обзоры/профиль, :profile =› обзор %› он установит переменную профиля локально на значение обзора - person Matthew Rudy; 16.06.2011
comment
@ Мэтью Руди, извини, я изо всех сил пытался следовать, теперь все работает! Большое спасибо - person Dave; 16.06.2011