在生成器中向Rails 3模板传递参数



在Rails 2生成器中,可以通过以下方式将数据传递给模板:

record.template(
  "src.html.erb",
  "dest.html.erb",
  :assigns => { :id => id, :name => name }

在Rails 3中,看起来template是一个新方法。不幸的是,看起来第三个参数config只接受:verbose选项。试图通过:assigns传递值似乎不起作用。

有人知道我如何传递动态值到我的Rails 3模板吗?

在Rails 3中传递参数给视图的例子。

https://github.com/rails/rails/blob/master/railties/lib/rails/generators/erb/controller/controller_generator.rb

# ...
actions.each do |action|
  @action = action
  @path = File.join(base_path, filename_with_extensions(action))
  template filename_with_extensions(:view), @path
end

模板:https://github.com/rails/rails/blob/master/railties/lib/rails/generators/erb/controller/templates/view.html.erb

<h1><%= class_name %>#<%= @action %></h1>
<p>Find me in <%= @path %></p>

Rails 3模板可以访问生成器中的任何方法,因此在上面的例子中,如果生成器有一个方法name和一个方法id,则不必更改模板中的任何内容。查看Rails 3中创建生成器的RailsCast,网址为http://railscasts.com/episodes/218-making-generators-in-rails-3。

相关内容

  • 没有找到相关文章

最新更新