如何在 Rails 中使用 if 条件的结果?就像是:
if @edits.where(:article_id => a.id).first
THIS.body.html_safe
else
a.body.html_safe
end
我到底如何访问该条件的结果?那就是这个记录?
谢谢!
如何在 Rails 中使用 if 条件的结果?就像是:
if @edits.where(:article_id => a.id).first
THIS.body.html_safe
else
a.body.html_safe
end
我到底如何访问该条件的结果?那就是这个记录?
谢谢!
您可以在if
语句中进行分配。
if edit = @edits.where(:article_id => a.id).first
edit.body.html_safe
else
a.body.html_safe
end
将这样的逻辑放在视图或助手中是非常难看的。评判这些不是 View 的工作。
更好的选择:
# Article model
def default_edit
edits.first
end
# Articles Controller
def show
article = Article.find(params[:article])
@article = article.default_edit || article
end
# view: no need to do anything, just plain obj
<%= @article.body %>
你可以写在一行:
(@edits.where(:article_id => a.id).first || a).body.html_safe
您可以使用find_by
或find_by_*
避免讨厌的.where().first
if edit = Edit.find_by(article_id: article.id)
edit.body.html_safe
else
article.body.html_safe
end