使用辅助类作为布尔按钮

时间:2018-05-08 11:29:18

标签: ruby-on-rails ruby button boolean helper

我的按钮如下

<% if user.active == true  %>
        <%= button_to "Block", user_path(id: user.id, active: false), class: 'btn btn-outline-dark',  method:  :patch %>
        <%else%>
        <%= button_to "Unblock", user_path(id: user.id, active: true), class: 'btn btn-outline-dark',  method: :patch %>
        <%end%>

我需要为上面的视图代码设置辅助类,而不是重复按钮两次。任何人都可以帮助我吗

2 个答案:

答案 0 :(得分:1)

或者您可以在button_to帮助器中提供逻辑:

<%= button_to (user.active ? "Block" : "Unblock"), user_path(id: user.id, active: !user.active), class: 'btn btn-outline-dark',  method:  :patch %>

因此,如果您仍然认为它很冗长,您可以将(user.active ? "Block" : "Unblock")逻辑移动到装饰器的帮助器中。

答案 1 :(得分:0)

帮助者:

def block_button(is_active)
  button_to is_active ? 'Block' : 'Unblock', user_path(id: user.id, active: !is_active), class: 'btn btn-outline-dark',  method:  :patch
end

在模板中

<%= block_button(user.active) %>