【发布时间】:2017-02-13 06:51:09
【问题描述】:
当构建一个资源时,比如说Post,你会得到一些看起来像下面这样的代码:
app/controllers/posts_controller.rb:
# POST /posts
# POST /posts.json
def create
@post = Post.new(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to posts_url, notice: 'Post was successfully created.' }
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
现在,我可以在索引页面中为任务渲染 _form.html.erb 部分:
app/views/posts/index.html.erb:
<%= render 'form', post: @post %>
而且,如果我进入 _form.html.erb 部分,我可以添加 remote: true 选项:
<%= form_for post, remote: true do |f| %>
而且我能够通过 ajax 请求成功附加新帖子。
让我感到困惑的是:
format.json { render :show, status: :created, location: @post }
这条线是怎么回事?例如,在实用工作室查看 Mike 的 this video tutorial。他创建了一个app/views/posts/create.js.erb,其中包含附加帖子所需的javascript。 Rails 会自动执行此操作吗?约定是什么?
【问题讨论】:
标签: jquery ruby-on-rails ajax forms ruby-on-rails-5