我无法在Rails中找出帮手

时间:2011-02-28 13:47:31

标签: ruby-on-rails ruby

嘿伙计们 我是铁杆新手。我制作了这个用于学习助手的小测试代码:

应用/助手/ home_helper.rb

module HomeHelper
  def show(var)
    yield var
  end
end

应用/视图/家/ index.html.rb

<%= show('hello world')%>

当我导航到网址localhost:3000/home/index时,html源代码中没有任何内容 我做错了什么?

4 个答案:

答案 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)

删除yieldyield用于阻止 - 你的意思是return吗? (这是可选的)。

答案 3 :(得分:1)

另一个(可以说是更好的)选项是在控制器中设置显示文本。

home_controller.rb

HomeController < ActionController 

  # Other controller code...

  def index
    @text = "Hello, world!"
  end

end

index.html.erb

<%= @text %>