Javascript Can';“提交”按钮上无法显示闪烁或错误消息
我有这个表单,我试图将表单的内容提交到模型“Leeds”,然后根据数据是否通过模型验证显示成功/失败消息 我遇到的问题是,当我单击“发送消息”按钮时,它会将我从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"
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