应用/助手/ home_helper.rb
module HomeHelper
def show(var)
yield var
end
end
应用/视图/家/ index.html.rb
<%= show('hello world')%>
当我导航到网址localhost:3000/home/index
时,html源代码中没有任何内容
我做错了什么?
答案 0 :(得分:2)
这里有几点需要注意:
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
这将返回您传入的值,并将其输出到响应流。
虽然阻止帮助程序通常可用于在大多数情况下干掉代码partial with a layout。
答案 1 :(得分:1)
你为什么要收益?简单回归:
def show(var)
var
end
答案 2 :(得分:1)
删除yield
。 yield
用于阻止 - 你的意思是return
吗? (这是可选的)。
答案 3 :(得分:1)
另一个(可以说是更好的)选项是在控制器中设置显示文本。
home_controller.rb
HomeController < ActionController
# Other controller code...
def index
@text = "Hello, world!"
end
end
index.html.erb
<%= @text %>