我使用render_to_string
and a partial 而不是 helper 来实现类似的目标。
# app/controller/dogs_controller.rb
def create
@dog = Dog.new(params[:dog])
@messages=[]
if @dog.save
@messages << "one"
@messages << "two"
flash[:notice] = render_to_string( :partial => "bulleted_flash")
redirect_to(dogs_path)
else
render :action => 'new
end
end
然后我在 HTML 列表中格式化 Flash 消息数组
# app/views/dogs/_bulleted_flash.html.erb
<ol>
<% @messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ol>
生成以下 HTML
# http://0.0.0.0:3000/dogs
<body>
<div id="flash_notice">
<ul>
<li>one</li>
<li>two</li>
</ul>
</div>
...
</body>
如果您需要继续使用帮助程序,那么我认为您需要将该html_safe
方法附加到您的字符串以防止它被编码(默认情况下,rails 3 会这样做)。这是一个显示如何以html_safe
类似方式使用的问题