[英]I can't figure out helper in Rails
大家好,我是新手。 我编写了这个小的测试代码来学习Rails中的帮助程序:
应用程序/佣工/ home_helper.rb
module HomeHelper
def show(var)
yield var
end
end
应用程序/视图/家/ index.html.rb
<%= show('hello world')%>
当我导航到url localhost:3000/home/index
时,html源中什么也没有,我做错了什么?
这里有几件事要注意:
module HomeHelper
def show(var)
yield var
end
end
首先,您要使用yield
,它将控制权传递给该方法给出的块。 但是,然后您可以无障碍地调用该方法:
<%= show('hello world') %>
如果您有一个障碍,它将看起来像这样:
<%= show('hello world') do |v| %>
<%= v %>
<% end %>
如您所料,这将输出“ hello world”。
最像您的意思是:
module HomeHelper
def show(var)
var
end
end
这将返回您传递的值,并将其输出到响应流。
虽然块帮助程序通常在大多数情况下对于使代码干燥有用,但是您希望部分布局 。
你为什么要屈服? 简单的回报:
def show(var)
var
end
除去yield
。 yield
是区块-您的意思是return
吗? (它是可选的)。
另一个(可能更好)的选项是在控制器中设置显示文本。
home_controller.rb
HomeController < ActionController
# Other controller code...
def index
@text = "Hello, world!"
end
end
index.html.erb
<%= @text %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.