使用HAML和Rails连接变量和link_to

问题描述

我有一个包含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')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...