我對Rails相當陌生,對於如何在if ... else語句之外傳遞局部變量感到困惑。它看起來像在助手文件中創建一個方法是傳統的方式來做到這一點,但我不知道如何做到這一點。如何在Rails 3中定製助手?
所以我試圖讓任務的作者。如果任務的作者不存在,我想使用其父級教學大綱的作者(任務屬於教學大綱)。然後我想打印出該作者的用戶名。我能做到這一點時,我正在處理只有一個任務,如:
//controller
@mission = Mission.first
if [email protected]?
@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 [email protected]?
@author = @mission.author
return @author
else
@author = @mission.syllabus.author
return @author
end
end
,並把下面的循環中
<%= author_getter(mission) %>
但是,這沒有奏效。在if ... else語句之外傳遞變量的最佳方法是什麼?
非常感謝!這現在非常有意義! :) :)我真的不知道我如何表達我現在感覺的快樂和感激! – kibaekr
還有1個問題:當我使用'mission.real_author'時,我想將其存儲爲'@author = mission.real_author',我將在何處定義@author變量?我是否必須在.each do循環中完成它,或者我可以以某種方式在控制器中定義它? – kibaekr
@KeithRyu:當你有'@ missions'時,你想在迭代中使用'<%author = mission.real_author%>',這樣'author'就不會泄漏出去並在別處造成麻煩。 –