レールでは、ビュー内で次のようなことをする状況によく遭遇します
<% if @some_condition_previusly_established_in_a_controller %>
<div class="one">123</div>
<% else %>
<div class="two">something else</div>
<% end %>
少し雑然としています。これは、ビューを操作するための受け入れ可能な方法ですか?
レールでは、ビュー内で次のようなことをする状況によく遭遇します
<% if @some_condition_previusly_established_in_a_controller %>
<div class="one">123</div>
<% else %>
<div class="two">something else</div>
<% end %>
少し雑然としています。これは、ビューを操作するための受け入れ可能な方法ですか?
ビューにそのような条件付きロジックが 1 つまたは 2 つある場合は問題ないと思いますが、コードが大きくなり、複数if..else..end
あり、「雑然と」見える場合は、ビューを分離することでビューを大幅にクリーンアップする「プレゼンター パターン」の実装を検討する必要があると思います。プレゼンターへのロジック。
これは、Rails Casts シリーズの Ryan Bates による「ゼロからのプレゼンター パターン」に関する素晴らしいチュートリアルです。 http://railscasts.com/episodes/287-presenters-from-scratch .
やってみました?
<% @some_condition_previusly_established_in_a_controller ? <div class="one">123</div> : <div class="two">something else</div> %>
ビューに多くのタグと HTML 要素が含まれている場合は、それらをパーシャルに入れ、ロジックをモデルに入れることができます
意見:
<%= render :partial => @model.status %>
<%= render :partial => "file/path/#{@model.status}" %> # if your partial is in some different folder
ステータスが 1 の場合、ファイル _one.html.erb がレンダリングされます。
2 の場合、ファイル _two.html.erb が自動的にレンダリングされます。
モデル:
def status
if @some_condition
"one"
else
"two"
end
end