控制器中有一个动作。它只能通过ajax 以json格式调用。
def update
@article = Article.find_by_id params[:id]
respond_to do |format|
if @article.update_attributes(params[:article])
flash[:message] = "good"
else
flash[:error] = @article.errors.full_messages.join(", ")
end
format.json { render :json => flash}
end
end
页面的一部分
<% unless flash[:error].blank? %>
<%= flash[:error] %>
<% end %>
<% unless flash[:message].blank? %>
<%= flash[:notice] %>
<% end %>
<!-- page content goes -->
当然,一个页面包含一个button_to
,:remote=>true
调用方法update
。
底线是更新后没有显示任何内容。 JSON对象肯定会返回,我可以在fireBug中看到它。
问题是,我正确使用闪光灯吗?我如何使用它在页面上显示消息?请不要忘记ajax。
答案 0 :(得分:4)
为什么在respond_to块中有if / else语句?
def update
@article = Article.find_by_id params[:id]
if @article.update_attributes(params[:article])
flash[:notice] = "Good"
else
flash.now[:notice] = "Bad"
render "edit"
end
respond_to do |format|
format.html {redirect_to @article}
format.js
end
end
然后创建 update.js.erb
$("#notice").text("<%= escape_javascript(flash[:notice]) %>")
$("#notice").show()
上面的代码可能不是100%正确。
对于flash,我会有类似的东西:
<div id="notice">
<% flash.each do |key, value| %>
<%= content_tag(:div, value, :class => "flash #{key}") %>
<% end %>
</div>
答案 1 :(得分:1)
答案 2 :(得分:-1)
我想
您必须绑定ajax:success
回拨,这将通过替换消息或将消息发送到dom来显示Flash消息。