我有Ruby on Rails 3的东西
我尝试这个简单的代码
def index
flash[:notice] = "ok"
respond_to do |format|
format.html # index.html.erb
end
end
它不起作用
NoMethodError in DashboardsController#index
undefined method `flash' for #<ActionDispatch::Request:0x7fee9329a9d0>
当我尝试
时redirect_to :some_in, :notice => "ok"
在其他地方(在some_controller.rb中)然后打印:在.erb中注意 我有同样的错误,未定义的方法`flash'
我坚持这个。我使用谷歌搜索它,但它没有帮助。
答案 0 :(得分:2)
在您的应用的config/applications.rb
中添加此
config.api_only = false
答案 1 :(得分:1)
请在您的config / application.rb文件中加入ActionDispatch::Flash中间件。
config.middleware.use ActionDispatch::Flash
这可能会对你有帮助。
答案 2 :(得分:-1)
flash[:notice]
只会在redirect_to
或render
之后显示(尽管您需要flash.now[:notice]
)。
闪存用于向用户提供有关用户采取的操作状态的反馈。仅渲染索引通常不会属于此类别,因为它只显示数据,而不显示用户采取操作的结果。
举个例子:
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to(@post,
:notice => 'Post was successfully created.') }
else
format.html { render :action => "new" }
end
end
end
在这种情况下,只有在直接保存帖子后,Flash才会出现在Post Post视图中。