Как передать вложенный ресурс пользовательскому помощнику для ruby ​​на рельсах? - PullRequest
0 голосов
/ 07 ноября 2018

Вот код

Модель:

В категории много предметов

Вид:

показать:

<% category.subjects.each do |subject| %>
  <div class="container">                           
    <%= render partial: "layouts/trial", :locals => {:subject => subject} %>
  </div>                 
<% end %> 

Макеты / испытание:

<%= description(@subject)  %>

trial_helper.rb

module TrialHelper
  def subject
    @subject ||= []
  end

  def description(subject)
    @des = "#{subject.content}"
  end

end

получится

ActionView::Template::Error (undefined method `content' for nil:NilClass):
    1:       <%= description(@subject)  %>

Я пытался использовать

<%= render partial: "layouts/trial", :locals => {:subject => @category.subject} %>

и

def description(subject)
  @des = "#{@subject.content}"
end

Но это все еще не работает. В чем проблема?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

изменение

<%= description(@subject)  %>

до

<%= description(subject)  %>

местные жители передаются как local variables не instance variables

0 голосов
/ 07 ноября 2018

Вероятно, ваш subject равен nil в вашем layouts/trial.

Наилучший подход - отладка и проверка места возникновения проблемы.

Вы можете установить в своем layouts/trial что-то вроде <%= raise @subject.inspect %>, и если оно действительно возвращает ноль, мы можем подтвердить, что этот код <%= render partial: "layouts/trial", :locals => {:subject => subject} %> не работает должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...