【发布时间】: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 %>');
<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_one').hide().after("<%= j render 'form' %>")
【问题讨论】:
-
您的帖子表格在哪里?在哪个页面上?
-
@JagdeepSingh 是的,我有这个
-
@JagdeepSingh 我已经在帖子本身中提到了帖子部分
-
@JagdeepSingh 现在我已经编辑了帖子并包含了 new.js.erb 文件
-
“我已经在帖子本身中提到了帖子的部分内容” - 你是什么意思?
标签: javascript jquery ruby-on-rails ajax