Ruby on rails 带有remote:true的Rails表单将重新加载页面

Ruby on rails 带有remote:true的Rails表单将重新加载页面,ruby-on-rails,ruby,ajax,forms,Ruby On Rails,Ruby,Ajax,Forms,在我的Rails 5.1应用程序中,我有两个控制器:home_控制器和posts_控制器,这是我用scaffold工具创建的,所以我要做的是在我的home_控制器.rb的索引视图中呈现部分\form.html.haml,如下:(顺便说一句,我正在使用haml) 我在表单中添加了remote:true,如下所示: = form_for @post, remote: true do |f| - if @post.errors.any? #error_explanation %h2= "#{p

在我的Rails 5.1应用程序中,我有两个控制器:home_控制器和posts_控制器,这是我用scaffold工具创建的,所以我要做的是在我的home_控制器.rb的索引视图中呈现部分
\form.html.haml
,如下:(顺便说一句,我正在使用haml)

我在表单中添加了
remote:true
,如下所示:

= form_for @post, remote: true do |f|
 - if @post.errors.any?
 #error_explanation
  %h2= "#{pluralize(@post.errors.count, "error")} prohibited this post from being saved:"
  %ul
    - @post.errors.full_messages.each do |message|
      %li= message
 .mdl-textfield.mdl-js-textfield.full-width
   = f.text_area :body, class:"mdl-textfield__input", row:3
   = f.label :body, "Write something",class:"mdl-textfield__label"
.actions.text-right
= f.submit 'Save',class:"mdl-button mdl-js-button mdl-button--raised mdl-button--colored"
如您所见,它有
remote:true
,但当我提交表单时,它会将我带到我的posts\u控制器中的show视图, 这是我的
posts\u控制器

def create
 @post = current_user.posts.new(post_params)
   respond_to do |format|
     if @post.save
      format.html { redirect_to @post}
      format.json { render :show, status: :created, location: @post }
     else
      format.html { render :new }
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end
我创建了一个
show.js.coffee
来显示在表单下方的
中创建的帖子

$('#posts').append('<%= j render @post %>')
$('#posts')。追加(''')
基本上,我想要的是在表单下方显示创建的帖子,而无需重新加载页面或在我的
posts\u控制器中显示视图


我做错了什么?我如何才能做到这一点?

试着将您的创建操作设置为如下:

def create
 @post = current_user.posts.new(post_params)
   respond_to do |format|
     if @post.save
      format.js
      format.html { redirect_to @post}
      format.json { render :show, status: :created, location: @post }
     else
      format.js
      format.html { render :new }
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end

我刚刚添加了format.js

尝试如下设置您的创建操作:

def create
 @post = current_user.posts.new(post_params)
   respond_to do |format|
     if @post.save
      format.js
      format.html { redirect_to @post}
      format.json { render :show, status: :created, location: @post }
     else
      format.js
      format.html { render :new }
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end

我刚刚添加了format.js

检查浏览器检查器(在chrome:ctrl+shift+j或F12中)是否存在js错误,可能您的js文件没有加载?没有错误,所有js文件都在加载。您的
routes.rb
文件中是否有
资源:posts
?是否加载了
jquery ujs
javascript文件?检查浏览器检查器(在chrome:ctrl+shift+j或F12中)是否存在JS错误,也许您的JS文件没有加载?没有错误,正在加载所有JS文件。您的
routes.rb
文件中是否有
资源:posts
?是否加载了
jquery ujs
javascript文件?