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

次のように 1 行で記述できます。

(@edits.where(:article_id => a.id).first || a).body.html_safe
于 2013-06-19T06:18:07.967 に答える
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 に答える
0

を使用し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
于 2015-04-16T14:06:12.573 に答える