如何在Rails中使用if條件的結果?例如:Rails:如果記錄存在,則使用此記錄
if @edits.where(:article_id => a.id).first
THIS.body.html_safe
else
a.body.html_safe
end
我怎樣才能訪問該條件的結果?那是這個記錄?
謝謝!
如何在Rails中使用if條件的結果?例如:Rails:如果記錄存在,則使用此記錄
if @edits.where(:article_id => a.id).first
THIS.body.html_safe
else
a.body.html_safe
end
我怎樣才能訪問該條件的結果?那是這個記錄?
謝謝!
你可以在一行中寫:
(@edits.where(:article_id => a.id).first || a).body.html_safe
您可以在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 %>
您可以使用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
上帝完美。謝謝。 –
這隻適用於存在'@ edits'的情況嗎?如果他們不呢? –
@emm然後附帶'a' – xdazz