将Rails值设置为多行?

时间:2010-09-22 16:17:19

标签: ruby-on-rails ruby multiline

在Rails中,您可以创建一个跨越多行的锚标记,执行如下操作:

<% link_to target_url_path do %>
    <span class="title">Example</span>
    <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span>
    <%= image_tag 'example.png', :class => 'thumbnail' %>
<% end >

我想知道如何使用类似的方法设置值。实质上,像:

<% my_variable = do %>
    <span class="title">Example</span>
    <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span>
    <%= image_tag 'example.png', :class => 'thumbnail' %>
<% end >

编辑:如果有人对我要问的原因感到好奇,那是因为facebox_link_to似乎不允许您使用像do这样的link_to语法。

2 个答案:

答案 0 :(得分:5)

我真的不知道你想做什么,但你可以使用#tap模式。

<% my_variable.tap do |variable| %>
  <span class="title">Example</span>
  <span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span>
  <%= image_tag 'example.png', :class => 'thumbnail' %>
<% end %>

如果您希望将一大块代码分配给变量,那么您做错了,因为视图不应该以这种方式设置变量。

相反,请使用帮助程序。

答案 1 :(得分:0)

这实际上是渲染内联模板。您可以使用render :inline

<% my_variable = render :inline => <<-EOS
<span class="title">Example</span>
<span class="excerpt">Neque porro quisquam est qui dolorem ipsum...</span>
#{image_tag 'example.png', :class => 'thumbnail'}
EOS
%>

希望这有帮助!