0

私は初心者です。ビューで繰り返し繰り返されないように、次のコードのメソッドをコントローラーに作成したいだけです。Ruby on Railsで短くエレガントな方法で書くにはどうすればよいですか?

<% @A = ....... %>
<% @B = ....... %>
<% @C = ....... %>
<% @D = ....... %>
<% @E = ....... %>

<% if (@A || @B || @C) %>
  <label> One: </label>
  <%= ... %>

  <label> Two: </label>
  <%= ... %>
<% end %>

<% if (@A || @B || @C || (@D && @E)) %>
  <label> Three: </label>
  <%= ... %>
<% end %>
4

1 に答える 1

2

Userモデルが呼び出され、提供したコードが「app / views / users/show.html.erb」に配置されていると仮定します

次のリファクタリングをお勧めします:(適切なロジック
に置き換えて、メソッドの名前をより意味のあるものに変更する必要があります)A,B,C,D and E

# in "app/helpers/users_helper.rb"
module UsersHelper
  def isABC
    return A || B || C
  end

  def isDandE
    return D && E
  end
end

# in "app/views/users/show.html.erb
<% if (isABC) %>
  <label> One: </label>
  <%= ... %>

  <label> Two: </label>
  <%= ... %>
<% end %>

<% if (isABC || isDandE) %>
  <label> Three: </label>
  <%= ... %>
<% end %>

Railsヘルパーについてはこちらをご覧ください:http://paulsturgess.co.uk/articles/49-using-helper-methods-in-ruby-on-rails

基本的に、コントローラーの責任は、着信Web要求を受け入れ、必要なデータ()をフェッチし、レンダリングModelに適切なものを呼び出すことです。View

RailsにはHelpers、から呼び出すことができるものがありますViews。イディオムは、ビューで使用される高度なロジックをHelper

于 2013-01-11T14:58:20.267 に答える