如何连接helper中的link_to?

时间:2015-05-29 02:35:57

标签: ruby-on-rails ruby

如何让它发挥作用?

我需要puts两个链接。

<<的联接link_to没有。

module ItemHelper

    def edit_links
        if user_signed_in? && @item.user_id == current_user.id
            html << link_to edit_item_path(@item), class: 'ui button small' do
                "<i class='icon edit'></i> Edit"
            end
            html << link_to item_photos_path(@item), class: 'ui button small' do
                "<i class='icon photo'></i> Photo"
            end
            html
        end
    end

end

4 个答案:

答案 0 :(得分:0)

您需要先使用<<添加某些内容,然后才需要调用#html_safe以阻止Rails转义HTML。< / p>

if user_signed_in? && @item.user_id == current_user.id
  html = ""
  html << link_to "<i class='icon edit'></i> Edit", edit_item_path(@item), class: 'ui button small'
  html << link_to "<i class='icon photo'></i> Photo", item_photos_path(@item), class: 'ui button small'
  html.html_safe
end

答案 1 :(得分:0)

<<运算符实际上是将对象推送到数组上。它看起来似乎还没有定义html变量。您在第一个链接之前创建数组,然后在最后一个链接之后加入它,您应该拥有所需的数据。

def edit_links
  if user_signed_in? && @item.user_id == current_user.id
    html = []
    # ... existing logic
    html.join
  end
end

答案 2 :(得分:0)

def show_link(link_text, link_source)
  link_to link_source, { class: 'ui button small' } do
    "#{content_tag :i, nil, class: 'iicon photo'} #{link_text}".html_safe
  end
end

在application_helper中创建一个帮助方法,并使用它来创建link_to标记。

答案 3 :(得分:0)

试试这个:

def edit_links
  if user_signed_in? && @item.user_id == current_user.id
     link_1 = link_to edit_item_path(@item), class: 'ui button small' do
       "<i class='icon edit'></i> Edit".html_safe
     end
     link_2 = link_to item_photos_path(@item), class: 'ui button small' do
       "<i class='icon photo'></i> Photo".html_safe
     end
     link = link_1 + link_2
  end
end