Javascript 如何在rails控制器中为create方法呈现javavscript文件

Javascript 如何在rails控制器中为create方法呈现javavscript文件,javascript,ruby-on-rails,forms,Javascript,Ruby On Rails,Forms,当用户没有填写表单的任何部分时,我需要呈现一个javascript文件来显示一个警报框。在填写所有输入之前,表单不会保存。我尝试了许多不同的组合,我觉得我离解决方案还有一段距离 def create @question = Question.new(question_params) if @question.save redirect_to new_question_share_quiz_path(@question) else respond_to do

当用户没有填写表单的任何部分时,我需要呈现一个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");

如果您必须使用
警报执行此操作
-这是一种解决方案:

如果表单有效,则创建一条快速消息

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
中添加Flash

<% if flash.any? %>
<ul id="flash">
  <% flash.each do |key,message| %>
  <li class="flash flash-<% key %>">message</li>
  <% end %>
</ul>
<% end %>

    应触发警报 应触发警报
您必须使用JavaScript告诉他们有错误吗?我通常使用类似于
flash[:warning]
的消息,然后再次呈现编辑页面。是的,它需要是一个警告框。页面的样式需要它;我的设计师也希望如此……您需要的是JavaScriptForm验证,为什么您希望它甚至可以在控制器中点击create方法?为什么不在用户单击“提交”按钮后检查它,并仅在填写字段时发送它?将行更改为
format.js{render:js=>“my_function();”}
。有关更多详细信息,请参阅。但正如其他人所说,添加客户端验证是一条出路。这仍然需要往返到服务器。