警报闪烁消息不与respond_with一起使用

时间:2015-02-27 14:00:08

标签: ruby-on-rails flash respond-with

我在我的Rails 4.2应用程序中使用responders gem。我遇到了一个相当复杂的情况,在Organization模型编辑视图中,我得到了一个带有一个输入的OrganizationUser表单。将用户添加到组织会在create中调用OrganizationUsersController操作。我在那里使用响应者进行重定向操作,如下所示:

def create
  @organization_user = @organization.organization_users.create(organization_user_params)
  respond_with @organization_user do |format|
    format.html { redirect_to edit_organization_path(@organization) }
  end
end

我的翻译:

flash:
  actions:
    create:
      notice: '%{resource_name} was successfully created.'
      alert: '%{resource_name} could not be created.'
  organization_users:
    create:
      notice: "Member has been added"
      alert: "Validation error"

问题是如果资源有效并且持久存储到数据库,一切都有效。我被重定向到编辑组织视图并带有正确的通知消息,但如果验证失败,我将被重定向而不会发出任何警报。

我可以设置闪光警报消息,除非@organization_user被保留,但这是使用响应者自动设置闪光的全部要点。

3 个答案:

答案 0 :(得分:2)

好的我明白了。事实证明,通过验证错误,闪存已正确设置,但它是flash.now而不是flash,并且删除了redirect_to闪存后。解决方案是使用:flash_now => false,如下所示:

respond_with(@organization_user, :flash_now => false) do |format|
  format.html { redirect_to edit_organization_path(@organization) }
end

答案 1 :(得分:1)

尝试:

respond_with @organization_user do |format|
  if @organization_user.valid?
    format.html { redirect_to edit_organization_path(@organization) }
  end
end

答案 2 :(得分:1)

请注意,要使config/locales/en.yml中的闪烁正常工作,您需要在控制器顶部显示responders :flash