2

如何在 Rails 中使用 if 条件的结果?就像是:

if @edits.where(:article_id => a.id).first
  THIS.body.html_safe
else
  a.body.html_safe
end

我到底如何访问该条件的结果?那就是这个记录?

谢谢!

4

4 回答 4

2

您可以在if语句中进行分配。

if edit = @edits.where(:article_id => a.id).first
  edit.body.html_safe
else
  a.body.html_safe
end
于 2013-06-19T06:16:55.680 回答
1

将这样的逻辑放在视图或助手中是非常难看的。评判这些不是 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 %>
于 2013-06-19T06:56:58.603 回答
1

你可以写在一行:

(@edits.where(:article_id => a.id).first || a).body.html_safe
于 2013-06-19T06:18:07.967 回答
0

您可以使用find_byfind_by_*避免讨厌的.where().first

if edit = Edit.find_by(article_id: article.id)
  edit.body.html_safe
else
  article.body.html_safe
end
于 2015-04-16T14:06:12.573 回答