如何让它发挥作用?
我需要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
答案 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