我想添加帮助程序以在标签中显示我的任务。
module Users::TasksHelper
include ActionView::Helpers::UrlHelper
def present_in_tabs collection
content_tag :div, class: "tabbable tabs-left" do
content_tag :ul, class: 'nav nav-tabs' do
collection.collect do |item|
content_tag :li do
link_to "Zadanie #{1}", "#task-#{item.id}", data: { toggle: 'tab' }
end
end.join.html_safe
end
content_tag :div, class: 'tab-content' do
collection.collect do |item|
content_tag :div, class: 'tab-pane' do
concat content_tag :h3 do
item.name
end
content_tag :p do
item.description
end
end
end.join.html_safe
end
end
end
end
这是我想要转换为辅助方法
.tabbable.tabs-left
%ul.nav.nav-tabs
- @related_tasks.each_with_index do |task, i|
%li{class: if task == @current_task then 'active' end}
= link_to "Zadanie #{i+1}", "#task-#{task.id}", data: { toggle: 'tab' }
.tab-content
- @related_tasks.each do |task|
.tab-pane{id: "task-#{task.id}", class: if task == @current_task then 'active' end}
%h3= task.name
%p
= task.description
答案 0 :(得分:1)
我认为这个问题相当简单:
concat content_tag :h3 do
item.name
end
content_tag :p do
item.description
end
您正在混合concat和返回值。您需要确保使用concat
或从帮助程序返回一个字符串。请查看文档:{{3}}
因此,与<%= %>
一起使用的帮助者需要创建一个html_safe
字符串,而concat
内的<% %>
也可以使用帮助器。
更好的解决方案是使用部分,如@cenyongh指出。