2017-02-13 59 views
1

當腳手架的資源,說Post你得到一些代碼,看起來像下面這樣:在腳手架資源時,Ajax如何在Rails 5中工作?

應用程序/控制器/ 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部分的任務在索引頁:

應用程序/視圖/職位/ 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。軌道是否自動執行此操作?什麼是約定?

回答

1

將「remote:true」添加到表單將應用於控制器中的format.js,並且在視頻教程的情況下,執行隨附的js.erb文件。

format.json允許您或者更多從字面上某種客戶端應用程序(mobile,javascript)以json方式發送請求並接收json格式的響應。您可以通過訪問localhost:3000/posts/1(對於html格式)和localhost:3000/posts/1.json(對於json格式)來在腳手架的「顯示」操作中對其進行測試。