3

我有 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 中打印:notice 我有同样的错误,未定义的方法 `flash'

我坚持这一点。我用谷歌搜索它,但它没有帮助。


首先,如果您使用的是 High Replication Datastore,请不要使用 JDO 或 JPA。这是我从艰难中吸取的教训。它只是不是为它而设计的。

我没有使用 JDO 或 JPA,而是使用了一个更简单、更清洁、更高效的库,称为 Objectify。

至于将数据存储在 HRD 中,您必须详细说明您的用例。如果你有一个单一的祖先模型,那么你可以在 HRD 中保持它的层次结构。如果您的模型还包括“母系”行,则必须以不同的方式进行。

将其分层(如果可能)可能会给您带来 2 个好处: - 能够在分层结构上进行交易。- 避免父对象的额外索引,因为通过祖先获取不需要对父字段进行索引。

还有两个缺点: - 你只能有一个父母。所以你需要决定哪一个是最好的候选人。例如,如果您有母亲、祖母系,则您必须选择父亲或母亲,但不能同时选择两者作为父母。- 放置/获取具有较长层次键的对象存在一些低效率。例如,必须始终获取父键。我建议你在文档中阅读它,因为我可能会误导你。

重要的是要记住,您可能不需要好处,而缺点会严重影响您的项目。所以你原来的问题的答案是:只有你能说出来。:)

4

3 回答 3

2

config/applications.rb你的应用程序中添加这个

config.api_only = false
于 2015-05-30T08:19:12.123 回答
1

请在 config/application.rb 文件中包含ActionDispatch::Flash中间件。

config.middleware.use ActionDispatch::Flash

这可能会对您有所帮助。

于 2015-10-27T11:58:36.140 回答
-2

flash[:notice]只会出现在 a或redirect_toa之后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 Show 视图中。

于 2012-01-17T11:51:48.263 回答