【发布时间】:2018-08-23 15:35:49
【问题描述】:
我有一个名为 Question 的模型,它具有创建操作;
我的目标是在实例无效时使用辅助方法(例如show_alert)立即显示一条消息。
question_controller.rb
def create
question = Question.new(question_params)
if question.save then
redirect_to show_question_path(question.id)
else
show_alert(:warning, question.errors)
end
end
application_controller.rb
helper_method :show_alert
def show_alert(type, message)
@type = type; @msg = message
respond_to do |format|
format.js { render :template => 'alert.js.erb'}
end
end
alert.js.erb
var div = $('<div></div>').addClass(`alert alert-${@type}`)
$('<ul></ul>').append( $('<li></li>').html(@msg)
div.append(ul)
$('#alerts').html(div)
但我没有显示闪光灯,而是在白屏上只看到部分代码。
自从我使用了 respond_to 后,我遇到了另一个错误:ActionController::UnknownFormat
我需要执行alert.js.erb中的sn-p代码,为了渲染flash,我认为诀窍在render函数的某个地方,但是两个小时的谷歌搜索只是浪费时间.
请帮忙!提前谢谢你
【问题讨论】:
-
我自己也不是什么专家。您能否解释一下创建操作是由 HTML 请求还是由 JS 调用的?你也知道 respond_to 块是如何工作的吗?
-
我建议保持简单。您应该具有在 html.erb 文件中显示警报的 javascript 函数。如果出现任何错误消息,则应该执行 html.erb 中的 javascript 函数。
-
你也可以分享你的 alert.js.erb 吗?
-
@HussainNiazi,是的,控制台说
Processing by QuestionController#create as HTML,我会尝试使用respond_to