我如何覆盖ruby方法的显示输出?

时间:2016-05-18 18:39:55

标签: ruby-on-rails ruby ruby-on-rails-4

我试图覆盖页面上显示的输出,只要它满足我的Ruby方法的条件。

此页面应显示仅在活动参数指定了角色时才编辑活动的用户。

以下是该方法的示例:

  def activity_by_role(data)
    if !data.include?(:role)
      content_tag(:div, content_tag(:p, "Not Permitted"), class: "strong")
    end
  end

我使用以下代码在视图中调用该方法:

  <%= render_activity activity unless activity_by_role(activity.parameters) %> | created at <%= activity.created_at %>

这是我收到的输出如下: enter image description here

如果用户名后面有空白,我希望它显示&#34; Not Permitted&#34;。它显示编辑的&#34;项目&#34;是如何显示该活动输出。

有关如何显示文字的任何建议&#34; Not Permitted&#34;如果活动参数不符合条件?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以在视图助手中简单地渲染两种可能性:

# helper:
def render_activity_by_role(activity)
  if activity.parameters.include?(:role)
    render_activity(activity)
  else
    content_tag(:div, content_tag(:p, "Not Permitted"), class: "strong")
  end
end

# view:
<%= render_activity_by_role(activity) %> | created at <%= activity.created_at %>