我试图在插值中为一个将被多次调用的帮助器创建一个link_to块(link_to with do),所以我只想在我的项目中使用这个代码一次。但是,当我尝试执行下面的代码时,我得到错误"意外的关键字类,期待关键字_或{' {'或者'('"所以我不知道如何做到这一点或者它是否可能.link_to块是在一些html代码和它的连接之间有了它,这就是为什么我需要底部的html_safe。
def example_helper_method()
example_string = ""
example_string += "SOME HTML ..."
example_string += "#{ link_to edit_foo_url(param1, param2, param3: 1) do }"
example_string += "<button class='btn btn-small #{foo_method(1)}' type='button'>Example</button>"
example_string += "#{end}"
example_string += "SOME HTML ..."
return example_string.html_safe
end
这是我在视图中调用此方法的地方
<%= example_helper_method() %>
谢谢:D
答案 0 :(得分:3)
link_to
返回一个字符串,为什么你需要所有的插值?你想要将第二个字符串从里到外调出并移动html_safe
调用,但这样的事情应该可以解决问题:
def example_helper_method()
example_string = ''
example_string += "SOME HTML ..."
example_string += link_to edit_foo_url(param1, param2, param3: 1) do
"<button class='btn btn-small #{foo_method(1)}' type='button'>Example</button>".html_safe
end
example_string + "SOME HTML..."
end
link_to
应该返回已经HTML安全的内容,这样您就不需要html_safe
它返回的内容。当您在字符串中构建HTML时,您确实希望在块内部进行html_safe
调用。您可能需要html_safe
根据SOME HTML
字符串进行{{1}}次调用,具体取决于实际情况。