将参数传递给生成器中的Rails 3模板

时间:2011-04-20 05:10:41

标签: ruby-on-rails-3 templates code-generation generator

在Rails 2生成器中,可以通过以下方式将数据传递到template

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

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

有谁知道如何将动态值传递给我的Rails 3模板?

2 个答案:

答案 0 :(得分:4)

将参数传递给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>

答案 1 :(得分:0)

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