2017-03-13 33 views
1

我是一个Ruby on Rails的新手,从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 
%> 

唯一的字符串被打印/返回的最后一部分/行,因为这是红宝石块是如何工作的,我明白。现在在下一个代码中,它会打印所有内容。

<%= 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注释代码(<!---->)输出。

回答

0

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

<%= var %>将输出中的变量

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

上面的表单代码输出标签,所以你需要每一行。我不确定有什么方法可以做到你想做的事情,但对于已经运行良好的事情来说,听起来很麻烦。

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