当用户没有填写表单的任何部分时,我需要呈现一个javascript文件来显示一个警告框。在填写所有输入之前,表单将不会保存。我尝试了很多不同的组合,我觉得我离解决方案更远了。
def create
@question = Question.new(question_params)
if @question.save
redirect_to new_question_share_quiz_path(@question)
else
respond_to do |format|
format.js { render :action => "try" }
end
end
端
try.js文件位于views文件夹中。
try.js文件只有一行代码
alert("You need to fill out the whole form");
答案 0 :(得分:0)
如果您绝对必须使用alert
- 这是一个解决方案:
如果表单有效,请创建一条Flash消息。
def create
@question = Question.new(question_params)
if @question.save
redirect_to new_question_share_quiz_path(@question)
else
respond_to do |format|
render :new, alert: 'The form is not valid'
end
end
end
将闪光添加到/views/layouts/application.html.erb
。
<% if flash.any? %>
<ul id="flash">
<% flash.each do |key,message| %>
<li class="flash flash-<% key %>">message</li>
<% end %>
</ul>
<% end %>
如果存在“警告”等级闪光,则添加使用javascript来创建警报。
$('.flash-alert', $('#flash')).each(function(){
alert($(this).text());
});
<!-- THIS IS JUST SO THAT YOU CAN RUN THE SNIPPET!! -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="flash">
<li class="flash flash-notice">Should trigger an alert</li>
<li class="flash flash-alert">Should trigger a alert</li>
</ul>
这里的优势在于,这是处理rails中表单反馈的传统方式,当你的设计师意识到并意识到在更正表单之前必须关闭对话框时,你只需要关闭javascript就会很烦人。