Rails: передача условия контроллеру, а затем частичное его использование?

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я довольно новичок в этом, поэтому любая помощь очень ценится.

При создании интерфейса с вкладками я пытаюсь повторно использовать тот же частичный контроллер and и передать: conditions контроллеру для построения каждой вкладки по-разному.

 @wishes_category = Wish.find :all,
:order => 'id DESC',
:conditions => {:user_id => @current_user.id}
  

Для первой вкладки потребуется что-то вроде :category_id=>1 в controller’s:conditions, что ограничивает то, что я показываю в нем.
Я пытаюсь передать это условие частичному, который будет использовать предварительно ограниченную @wishes_category с :category_id=>1

Спасибо! Наз

==

Основываясь на том, что сказал Эрик, я затем ограничил @wishes_category этот способ <% if category_id == wish.category_id %> частичным, таким образом решив проблему

Ответ №1:

Вы можете передать локальные параметры частичному через его тег рендеринга, используя что-то вроде:

 <%= render :partial => 'tab', :locals => {:category_id => 1} %>
  

Это устанавливает локальную переменную с частичным именем category_id равной 1. В вашем частичном на него можно было бы ссылаться просто с помощью <%= category_id %> . Теперь вы можете отображать один и тот же частичный файл несколько раз на странице с разными локальными переменными.

Конечно, переменная category_id должна существовать в частичном перед использованием, иначе она выдаст ошибку. Вы можете защититься от этого, сначала проверив <% if local_assigns[:category_id] %> .

Комментарии:

1. Спасибо за твою помощь, Эрик! Я получил локальную переменную category_id для передачи на все вкладки. В качестве продолжения, как бы я использовал это, чтобы повлиять на мой контроллер @wishes_category, чтобы применить условие?

2. Извините, я не видел вашего вопроса ранее, но я не совсем его понимаю … если вам все еще нужна помощь, пожалуйста, задайте другой вопрос и уточните подробнее. На самом деле причина, по которой я вернулся к этому, заключается в том, что я понял, что способ проверить, существует ли локальное значение в частичном, заключается в вызове if local_assigns[:category:id] . Я внес правку выше.

3. Спасибо, Эрик! Я заставил его работать с вашим советом и буду использовать отредактированный код для проверки локального.