在我的Rails 5.1应用程序中,我有2个控制器:home_controller和posts_controller,我使用脚手架工具创建,所以我正在做的是在_form.html.haml
的索引视图中呈现部分home_controller.rb
像这样:(顺便说一句,我正在使用haml)
.top-space
.row.center-xs
.col-xs-8.col-md-10
.row
.col-sm-3.col-lg-2.col-xs-10.top-space
%ul.no-bullets.text-left
%li=link_to "Explore", "#"
%li=link_to "Suggestions", "#"
.col-sm.col-xs-10
=render "posts/form"
#posts
我将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_controller中的show视图,
这是我的posts_controller
:
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
来显示在表单下方的<div id="posts">
中创建的帖子
$('#posts').append('<%= j render @post %>')
基本上我想要的是显示在表单下创建的帖子而不重新加载页面或让我在posts_controller
中显示视图。
我做错了什么,我怎样才能做到这一点?
答案 0 :(得分:0)
尝试像这样设置你的创建动作:
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