Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';“提交”按钮上无法显示闪烁或错误消息_Javascript_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Javascript Can';“提交”按钮上无法显示闪烁或错误消息

Javascript Can';“提交”按钮上无法显示闪烁或错误消息,javascript,ruby-on-rails,ruby-on-rails-4,Javascript,Ruby On Rails,Ruby On Rails 4,我有这个表单,我试图将表单的内容提交到模型“Leeds”,然后根据数据是否通过模型验证显示成功/失败消息 我遇到的问题是,当我单击“发送消息”按钮时,它会将我从Root带到Root/leeds 这是我正在使用的表单: <%= form_for @leed, {url:root_path, html: {id:"contactForm", name:"sentMessage", novalidate:true}} do |leed| %> <div class="row"

我有这个表单,我试图将表单的内容提交到模型“Leeds”,然后根据数据是否通过模型验证显示成功/失败消息

我遇到的问题是,当我单击“发送消息”按钮时,它会将我从
Root
带到
Root/leeds

这是我正在使用的表单:

<%= form_for @leed, {url:root_path, html: {id:"contactForm", name:"sentMessage", novalidate:true}} do |leed| %>
    <div class="row">
            <div class="col-md-6">
                <!-- Name -->
                <div class="form-group">
                    <%= leed.text_field :name, class: "form-control", :placeholder => "Your name *", :required => true, :data => {:validation_required_message => 'Please enter your name.' }  %>
                    <p class="help-block text-danger"></p>
                </div>
                <!-- Email -->
                <div class="form-group">
                    <%= leed.email_field :email, class: "form-control", :placeholder => "Your email *", :required => true, :data => {:validation_required_message => 'Please enter your email address.' } %>
                    <p class="help-block text-danger"></p>
                </div>
                <!-- Phone -->
                <div class="form-group">
                    <%= leed.telephone_field :phone, class: "form-control", :placeholder => "Your phone *", :required => true, :data => {:validation_required_message => 'Please enter your phone number.' } %>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <!-- Message -->
            <div class="col-md-6">
                <div class="form-group">
                    <%= leed.text_area :message, class: "form-control", :placeholder => "Your message *", :required => true, :data => {:validation_required_message => 'Please enter a message.' } %>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
            <div class="clearfix"></div>
            <!-- Submit -->
            <div class="col-lg-12 text-center">
                <div id="success">
                    <%= render 'shared/error_messages' %>
                </div>
                <%= button_tag "Send Message", class: "btn btn-xl" %>
            </div>

    </div>
<% end %>
这是我的HomeController方法:

  def create
    @leed = Leed.new(leed_params)
    if @leed.save
      #update page to reflect success
      flash[:success] = "Thank you, we'll contact you as soon as possible"
    else
      #update page to flect failure
      flash[:danger] = "There was an issue with the login attempt #{@leed.errors.full_messages.inspect}"
    end
    # redirect_to thank_you.html.erb
    render nothing:true
  end

在#create方法的末尾,您有
render nothing:true
。这意味着post请求将被提交到/leads,但服务器不会告诉浏览器去其他任何地方,因此浏览器将停留在/leads url。如果希望在post请求完成后将浏览器重定向到其他页面,则可以在创建操作的末尾添加重定向。希望有帮助

Puhlze是对的,您应该能够将页面重定向到Flash消息应该显示的位置。您还可以使表单
remote:true
并创建一个
create.js.erb
文件,该文件将弹出一条通知消息,而无需重新呈现页面;这是我们在使用AJAX提交时通常会做的。

嗨,问题是,它是一个单页网站,所以我不想让它去其他地方。我试图简单地通过一个隐藏的div来显示消息,说明它成功了或者没有成功,但是用户将保持在同一个页面上。我喜欢使用create.js.erb作为弹出显示的想法。目前,我发现唯一可行的方法是使用
render:index
,这会导致页面重新加载,但会显示flash。这并不可怕,但我更愿意在不重新加载的情况下完成这项任务。我只是不知道如何用Rails实现这一点。你有我可以效仿的例子吗?我还不知道如何用Rails实现JS。嘿,蝙蝠侠,是的,如果你想刷新页面,render:index可以工作。如果你不需要,你需要使用JS!这里有两个选项:看起来非常简单和干净,匹配引导格式,并且看起来它有更多的功能和更复杂的UI。我建议使用引导式的,尤其是如果你已经在使用它进行造型的话
  def create
    @leed = Leed.new(leed_params)
    if @leed.save
      #update page to reflect success
      flash[:success] = "Thank you, we'll contact you as soon as possible"
    else
      #update page to flect failure
      flash[:danger] = "There was an issue with the login attempt #{@leed.errors.full_messages.inspect}"
    end
    # redirect_to thank_you.html.erb
    render nothing:true
  end