我在我的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
被保留,但这是使用响应者自动设置闪光的全部要点。
答案 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
。