【问题标题】:How does Ajax work in Rails 5 when scaffolding a resource?在构建资源时,Ajax 在 Rails 5 中如何工作?
【发布时间】: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


    【解决方案1】:

    在表单中添加“remote: true”将应用于控制器中的 format.js,对于视频教程,执行随附的 js.erb 文件。

    format.json 允许您,或者更确切地说是某种客户端应用程序(移动、javascript),以 json 格式发送请求并接收 json 格式的响应。您可以通过访问 localhost:3000/posts/1(对于 html 格式)和 localhost:3000/posts/1.json(对于 json 格式)在您的一个脚手架“显示”操作中对此进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2020-12-07
      相关资源
      最近更新 更多