Ruby on rails 带有remote:true的Rails表单将重新加载页面
在我的Rails 5.1应用程序中,我有两个控制器:home_控制器和posts_控制器,这是我用scaffold工具创建的,所以我要做的是在我的home_控制器.rb的索引视图中呈现部分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
\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文件?