Rails 6: рендеринг частичного, если только я использую метод из моего контроллера - PullRequest
0 голосов
/ 21 января 2020

У меня есть пользовательский контроллер с методами index, show, edit и destroy. В моей раскладке / папке у меня есть пользователь общего назначения. html .erb layout, который отображает некоторые партиалы. Эти партиалы, конечно, приводят к ошибкам, потому что некоторая информация недоступна, например, @user.name. Я пытался отрисовывать это частичное всегда, когда я нахожусь в состоянии def show, что-то вроде:

<% if Users.show %>
<% render "shared/asides/users" %>
<% else %>
Other partials
<% end %>

Я пробовал несколько способов и всегда получаю ошибки. Я чувствую себя совершенно растерянным, даже пытаясь выяснить это в документации по Rails, кажется, там тоже ничего не указано.

1 Ответ

0 голосов
/ 21 января 2020

Ваша проблема, как вы говорите, заключается в том, что вы пытаетесь отобразить вещи, связанные с пользователем, например, @ user.name, но @ user не существует.

Так почему бы не проверить @user до того, как показывая частичное? Или, если у вас есть коллекция пользователей, я думаю, что @users?

<% if @users %>
  <%= render "shared/asides/users" %>
<% else %>
  <%= Do something else %>
<% end %>

Возможно, немного аккуратнее:

<%= render (@users ? path/to/partial_a.html.erb : path/to/partial_b.html.erb) %>
...