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 回答