【问题标题】:How to display validation error in rails using AJAX如何使用 AJAX 在 Rails 中显示验证错误
【发布时间】:2018-08-22 06:25:18
【问题描述】:

我需要显示我的帖子模型的验证错误。我使用 AJAX 调用在帖子的索引页面中创建了一个帖子。这样当点击 NewPost 按钮时,它会将新的帖子表单部分显示到索引页面中。在索引页面创建帖子时,如果发现任何验证错误,则会显示错误并再次以 js 格式呈现新的帖子表单部分,以便新的帖子表单与验证错误一起出现两次。

帖子控制器:

def create
  @post = @topic.posts.build(post_params)
  @post.user = current_user
  respond_to do |format|
    if @post.save
      # Success
    else
      format.js { render 'posts/new' }
    end
  end
end

创建.js.erb 文件:

alert("Post created Successfully");
$('.new_post').hide();
$('.new_one').show();
$('.post_div').prepend('<%= j render @post %>');
Index.html.erb 文件:

<div class="container" >
  <% if params[:topic_id].present? %>
      <h2 align="center"><span class="em-text"><%= @topic.topicname %> Posts</span></h2><hr>
      <%= link_to "New Post", new_topic_post_path, :class => 'btn btn-primary new_one' ,remote: true%> <br><br><br>
   <% else %>      
      <h2 align="center"><span class="em-text">All Posts</span></h2><hr>
    <% end %>
<div class="post_div">
 <%= render @posts %>
</div>
    <%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
</div>
为新的帖子形式发布部分内容:
<%= form_for [@topic, @post],remote: true,html: {multipart: true}, url: topic_posts_path do |f| %>

  <% if @post.errors.any? %>
    <% @post.errors.full_messages.each do |msg| %>
      <div class="alert alert-danger"><%= msg %></div>
    <% end %>
  <% end %>
  <div class="form-group">
    <%= f.label "Title" %><br/>
    <%= f.text_field(:title,{:class => 'form-control', :placeholder => 'Enter the Title'}) %>
  </div>

  <div class="form-group">
    <%= f.label "Body" %><br/>
    <%= f.text_area(:body, {:class => 'form-control', :placeholder => 'Enter the Post Body'}) %>
  </div>

  <div class="form-group">
    <%= f.submit({:class => 'btn btn-primary'})%>
  </div>
<% end %>
new.js.erb 文件:
 $('.new_one').hide().after("<%= j render 'form' %>")

【问题讨论】:

  • 您的帖子表格在哪里?在哪个页面上?
  • @JagdeepSingh 是的,我有这个
  • @JagdeepSingh 我已经在帖子本身中提到了帖子部分
  • @JagdeepSingh 现在我已经编辑了帖子并包含了 new.js.erb 文件
  • “我已经在帖子本身中提到了帖子的部分内容” - 你是什么意思?

标签: javascript jquery ruby-on-rails ajax


【解决方案1】:

使用可以这样

<% if @post.errors.any? %>
alert("ERROR(S):\n<%= j @post.errors.full_messages.join("\n") %>")

检查帖子是否有错误,如果有错误,则警告错误,否则做一些事情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2018-08-26
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多