У меня есть фон программирования C, и я изучаю Ruby/Rails для побочного проекта. В настоящее время я изо всех сил пытаюсь понять, как работает область видимости переменных. Вот пример проблемы, с которой я сталкиваюсь. У меня есть модель User и Product. В БД продукта я храню разные продукты, и одно из полей - это поле userid, которое соответствует идентификатору пользователя, хранящемуся в таблице User. После входа пользователя в систему - я показываю имя пользователя, адрес электронной почты и т. Д. (Это сохраняется в @current_user), а затем имеет ссылку для отображения разных продуктов, принадлежащих пользователю. Я делаю это с помощью следующего кода пользователей/show.html.erb как это: ... Доступ к одной переменной контроллера в другом контроллере в Rails
Имя: <% = @ current_user.name%>
... <% = link_to «Продукты», products_path, id: «продукты»%>Пока все хорошо. Когда я нажимаю ссылку «Продукты», она принимает меня к продуктам/index.html.erb, и следующий код запускается (я хочу отфильтровать этот показ, чтобы показывать только продукты, принадлежащие @ current_user.userid. Как это сделать? следующий код дает мне ошибку времени выполнения, как @current_user оценивает всухую я считаю. Если удалить «если» пунктом, то все продукты ар отображается, которые не то, что я хочу. Был бы признателен за любые советы.
<tbody>
<% @products.each do |product| %>
<tr>
<td><%= product.userid if product.userid == @current_user.userid %></td>
<td><%= product.productName if product.userid == @current_user.userid %></td>
<td><%= product.productLink if product.userid == @current_user.userid %></td>
Спасибо,
Предлагаю вам изучить драгоценный камень. Без этого добавьте вспомогательный метод приложения 'current_user', который извлекает пользователя (и запоминает результат). Devise - очень популярный камень, используемый в большинстве проектов Rails. Но если вам нравится, я могу создать ответ с помощью ручного метода. –