如何在控制器中为IF条件创建一个方法,以便在ruby on rails的视图中调用



我是新手。我只是想在控制器中为以下代码创建一个方法,以避免在视图中再次重复。我如何在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 %>

假设您的模型名为 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

相关内容

  • 没有找到相关文章