如果满足条件,则在Rails中有条件的link_to阻塞

时间:2015-01-19 07:15:21

标签: ruby-on-rails link-to

我想在一些代码中包含条件link_to,只有满足以下条件才会呈现链接:IF current_user.type == 'Agent'。无论如何,仍然需要呈现条件内的内容。

我当前的块看起来像这样:

<% @jobs_published.in_groups_of(3, false) do |job| %>
    <div class="row">
        <%= link_to "/job/#{job.id}" do %>
            <div class="panel">
                <h4>Job</h4>
                <p><%= job.suburb %></p>
                <p><%= job.street_name %></p>
                <p><%= job.post_cide %></p>
            </div>
        <% end %>
    </div>
<% end %>

3 个答案:

答案 0 :(得分:2)

我通过以下方式解决了这个问题:

查看:

<% @jobs_published.in_groups_of(3, false) do |job| %>
    <div class="row">
        <%= link_to_if current_user && current_user.type == 'Agent', { controller: "agents", action: "job", :id => job.id } do %>
            <div class="panel">
                <h4>Job</h4>
                <p><%= job.suburb %></p>
                <p><%= job.street_name %></p>
                <p><%= job.post_cide %></p>
            </div>
        <% end %>
    </div>
<% end %>

ApplicationHelper:

def link_to_if(*args,&block)
    args.insert 1, capture(&block) if block_given?

    super *args
end

参考:https://stackoverflow.com/a/25916594/2811283

答案 1 :(得分:0)

您应该使用link_to_if

这是文档链接。 http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if

答案 2 :(得分:0)

您可以尝试以下

<% @jobs_published.in_groups_of(3, false) do |job| %>
    <div class="row">
        <%= link_to_if(current_user.type == 'Agent', "/job/#{job.id}") do %>
            <div class="panel">
                <h4>Job</h4>
                <p><%= job.suburb %></p>
                <p><%= job.street_name %></p>
                <p><%= job.post_cide %></p>
            </div>
        <% end %>
    </div>
<% end %>

有许多条件link_to元素

link_to_iflink_to_unlesslink_to_unless_current