在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。