Ruby on Rails:在ruby块内循环时打印字符串

时间:2017-03-13 07:08:12

标签: ruby-on-rails ruby

我是来自PHP背景的Ruby On Rails新手。我有这段代码:

<%= 
form_for(@user, :url => new_user_path) do |form|
    form.label :name, 'Name: '
    form.text_field(:name)
    form.label :age, 'Age: '
    form.text_field(:age)
end
%>

打印/返回的唯一字符串是最后一个部分/行,因为这就是我理解的ruby块的工作方式。现在在下一个代码中,它将打印出来。

<%= form_for(@user, :url => new_user_path) do |form| %>
    <%= form.label :name, 'Name: ' %>
    <%= form.text_field(:name) %>
    <%= form.label :age, 'Age: ' %>
    <%= form.text_field(:age) %>
<% end %>

如何在不使用<%=%>的情况下打印所有标记。我正在寻找这样的,因为我来自PHP,如果能,它可以使代码更具可读性和整洁性。或许也许我可能做错了?我已经尝试构建字符串,然后将变量放在块的末尾以便循环返回,如下所示:

<%= 
form_build = String.new
form_for(@user, :url => new_user_path) do |form|
    form_build += form.label :name, 'Name: '
    form_build += form.text_field(:name)
    form_build += form.label :age, 'Age: '
    form_build += form.text_field(:age)
    form_build.to_s
end
%>

但是打印的字符串被包含在输出中的html注释代码(<!-- -->)中。

1 个答案:

答案 0 :(得分:0)

您必须了解视图中Rails works and is using templating markup的方式。

<%= var %>将输出变量

<% Ruby code %>是ruby代码的包装器。它不会输出任何东西。

上面的表单代码输出标记,因此您需要每一行。我不确定是否有办法做你想做的事情,但对于已经运作良好的事情来说,这听起来很麻烦。

来自PHP,只是“保持冷静,相信力量”!