问题描述
我有一个包含2列的表:
%table.table.table-hover.table-striped.table-condensed
%thead
%tr
%th= t('column.name1')
%th= t('column.name2')
%th
%tbody
%tr
%td= "#{name1}" + link_to 'Details',name_path(@abc),class: 'btn btn-default btn-xs',id: 'name_details'
%td= family_name
我需要显示name1
变量的值,并在其旁边显示链接到Details
作为同一个%td
的一部分。
您可以在我的代码中看到,我正在尝试这样做:
%td= "#{name1}" + link_to 'Details',id: 'name_details'
但是这给了我一个语法错误,并且不确定写那行代码的正确方法/语法是什么。
非常感谢!
解决方法
您可以通过如下所示的字符串插值来实现:
%td= "#{name1} #{link_to 'Details',name_path(@abc),class: 'btn btn-default btn-xs',id: 'name_details'}"
编辑#1
连接该值时,您将收到以下错误
SyntaxError - syntax error,unexpected tSTRING_BEG,expecting do or '{' or '('
您将收到此异常,因为ruby无法区分需要传递给方法link_to
的所有参数。
如异常所示,并且@jvillian正确指出,您可以在函数调用中加上括号。
%td= name1 + link_to('Details',id: 'name_details')
通过两种方式,串联后返回的数据将以字符串形式返回,默认情况下不会以html_escape结束。
您需要使用html_safe
%td= name1 + link_to('Details',id: 'name_details')