我用render_to_string
和部分而不是助手來實現類似的東西。
# 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列表
# 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)。這是一個question showing how to use html_safe
in a similar fashion