51

レールでは、ビュー内で次のようなことをする状況によく遭遇します

<% if @some_condition_previusly_established_in_a_controller %>
 <div class="one">123</div>
<% else %>
 <div class="two">something else</div>
<% end %>

少し雑然としています。これは、ビューを操作するための受け入れ可能な方法ですか?

4

6 に答える 6

10

ビューにそのような条件付きロジックが 1 つまたは 2 つある場合は問題ないと思いますが、コードが大きくなり、複数if..else..endあり、「雑然と」見える場合は、ビューを分離することでビューを大幅にクリーンアップする「プレゼンター パターン」の実装を検討する必要があると思います。プレゼンターへのロジック。

これは、Rails Casts シリーズの Ryan Bates による「ゼロからのプレゼンター パターン」に関する素晴らしいチュートリアルです。 http://railscasts.com/episodes/287-presenters-from-scratch .

于 2013-07-22T18:51:22.350 に答える
9

やってみました?

<% @some_condition_previusly_established_in_a_controller ? <div class="one">123</div> : <div class="two">something else</div> %>
于 2014-11-03T19:17:51.387 に答える
5

ビューに多くのタグと 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
于 2015-12-11T19:00:13.980 に答える