我正在尝试在创建操作后仅渲染没有重定向或渲染的Flash消息:
def create
@subscriber = Subscriber.new(params[:subscriber])
if @subscriber.save
success = true
message = "Thanks!"
else
success = false
message = "Sorry, there was an error."
end
respond_to do |format|
format.html {
if success
flash[:success] = message
else
flash[:error] = message
end
}
end
end
使用此代码,我收到模板缺失错误。我也不想刷新同一页面。如何在不刷新页面且没有模板错误的情况下显示Flash消息?
答案 0 :(得分:2)
如果您没有重定向到任何其他操作,那么您应该有一个名为create.html
的视图
这里的常见做法是重定向某个地方,比如root_path,或者转到用户个人资料或其他任何
是的,只显示flash消息,你可以使用AJAX,然后你的控制器动作看起来就像:
def create
@subscriber = Subscriber.new(params[:subscriber])
success_msg, error_msg = "Thanks!", "Sorry, there was an error."
respond_to do |format|
if @subscriber.save
format.html { redirect_to root_path, :success => success_msg }
format.js { render :js => your_javascript_to_show_the_message_here }
else
format.html { redirect_to root_path, :error => error_msg }
format.js { render :js => your_javascript_to_show_the_message_here }
end
end
end