我对 Rails 还很陌生,我对如何在 if...else 语句之外传递局部变量感到困惑。看起来在帮助文件中创建一个方法是执行此操作的常规方法,但我不确定如何执行此操作。
所以我想找到任务的作者。如果任务的作者不存在,我想使用其父教学大纲的作者(任务属于教学大纲)。然后我想打印出那个作者的用户名。当我只处理一个任务时,我能够做到这一点,比如:
//controller
@mission = Mission.first
if !@mission.author.blank?
@author = @mission.author
else
@author = @mission.syllabus.author
end
//view
<%= @author.username %>
但是在处理 foreach 循环时我不确定如何执行此操作:
//controller
@mission = Mission.all
//view
<% @mission.each do |mission| %>
..(where do I put the logic of finding author? I can't put it in my controller anymore and it won't pass the @author variable outside the if else statement if I put the logic here in the view)..
<%= @author.username %>
<% end %>
我徒劳的尝试是创建一个助手:
def author_getter(mission_id)
@mission = Mission.find(params[:mission_id])
if !@mission.author.blank?
@author = @mission.author
return @author
else
@author = @mission.syllabus.author
return @author
end
end
并将以下内容放入循环中
<%= author_getter(mission) %>
然而,这并没有奏效。在 if...else 语句之外传递变量的最佳方法是什么?