Ruby on rails 未通过验证创建Rails闪存消息
我在谷歌上搜索了好几个小时,堆积如山,仍然找不到解决问题的办法 我需要在Rails模型中的验证中显示一条flash消息,但它不希望发生 以下是模型中的验证:Ruby on rails 未通过验证创建Rails闪存消息,ruby-on-rails,flash,Ruby On Rails,Flash,我在谷歌上搜索了好几个小时,堆积如山,仍然找不到解决问题的办法 我需要在Rails模型中的验证中显示一条flash消息,但它不希望发生 以下是模型中的验证: validates :name, uniqueness: {message: "that artist already added"} 我甚至在我的控制器中有这个作为后备: class BandsController < ApplicationController def create @band = B
validates :name, uniqueness: {message: "that artist already added"}
我甚至在我的控制器中有这个作为后备:
class BandsController < ApplicationController
def create
@band = Band.create(id: params[:id])
if @band.save
flash[:message] = "Saved."
else
flash[:message] = "Nope."
end
render nothing: true, status: 201
end
class-BandsController
但是没有骰子
在application.html.erb中,我得到了
<div class="flash_success">
<%= flash[:message] %>
</div>
<%= yield %>
我觉得应该发生一些事情,如果不是通过模型中的验证,那么通过控制器中的保存成功。当我查看页面时,div甚至会出现,但是,唉,没有消息
为什么这里没有打印到DOM中
谢谢你的指导
使现代化 我可能应该提到,我使用jQuery来显示我的HTML,而不是Rails视图文件。我知道这可能不太理想,但在这种情况下,它对我正在做的事情有效
flash[:message] = "Something"
render nothing: true, status: 201
如果不呈现任何内容:true
,则将停止消息呈现的执行。相反,您应该重定向到某处&然后您会注意到在DOM中呈现的flash[:message]
可能是:
def create
@band = Band.create(id: params[:id])
if @band.save
flash[:message] = "Saved."
else
flash[:message] = "Nope."
end
render bands_path #moving to the band listing page.
end
仍然没有渲染如果您想要使用flash,则需要使用javascript。请检查以下代码:
1. remove that render nothing: true statement.
2. app/views/bands/create.js.erb
$('#flash_div').text("<%= flash[:message] %>");
1。删除“不呈现任何内容:true”语句。
2.app/views/bands/create.js.erb
$('flash_div')。文本(“”);
创建操作之后,将执行create.js.erb。这段代码将在当前DOM结构中搜索#flash_div并注入您的flash内容 使用渲染时,请使用“flash.now”,使用重定向时,请选择使用“flash”。按以下方式更改上述内容。有关更多信息,请参阅文档()
class-BandsController
我认为这可能是问题所在,但遗憾的是,我所有的html都是通过.js文件而不是Rails erb文件使用.appendTo()呈现的。所以我不知道该如何重定向到那个文件。有什么想法吗?没什么。按照您的指示进入T,但仍然没有向该分区注入任何内容。甚至在
此处添加结束ruby标记“#flash_div”就是您要渲染flash的分区。在您的情况下,您需要使用$('.flash_success')。请粘贴您的application.html.erb代码。我将为您准备准确的代码。application.html.erb代码就是上面显示的代码。我使用的是$('.flash_success')。文本(“”)代码>在我的create.js.erb中,就像你建议的那样(并在控制器中取出render语句),所以我不确定这是问题所在。当我检查DOM时,flash_success div就在那里,只是空的。无论保存或不保存什么。
class BandsController < ApplicationController
def create
@band = Band.create(id: params[:id])
if @band.save
flash.now[:message] = "Saved."
else
flash.now[:message] = "Nope."
end
render nothing: true, status: 201
end