2017-05-04 60 views
0

我正在製作一個博客式應用程序,並且正在編輯時更新帖子。無法在Ruby on Rails上更新帖子

我使用的部分稱爲_post_form編輯帖子:從我的帖子控制器

<%= form_for(@post) do |f| %> 
<%= render 'shared/error_messages', object: f.object %> 
<div class="field"> 
<%= f.text_area :content, placeholder: "Compose new post..." %> 
</div> 
<div id="post_button"> 
<%= f.submit "Post", class: "btn btn-primary" %> 
</div> 
<% end %> 

相關代碼:

class PostsController < ApplicationController 
before_action :find_note, only: [:show, :edit, :update] 

def update 
    redirect_to @post 
end 

def find_note 
    @post = Post.find(params[:id]) 
end 

當我點擊「發佈」按鈕,將我重定向到正確的但是它不會使用我輸入到表單中的新文本實際更新它。我覺得我缺少一些基本的東西,但我不確定它是什麼。

任何幫助表示讚賞!

回答

1

您沒有更新控制器中的任何內容,只是將用戶重定向到post視圖。

首先獲得新的post值:

def post_params 
    params.require(:post).permit(:content) 
    end 

,然後更新它重定向之前:全部放在一起

def update 
    @post.update(post_params) 
    redirect_to @post 
end 

,控制器應該是這個樣子:

class PostsController < ApplicationController 
    before_action :find_note, only: [:show, :edit, :update] 

    def update 
    @post.update(post_params) 
    redirect_to @post 
    end 

    private 

    def post_params 
    params.require(:post).permit(:content) 
    end 

    def find_note 
    @post = Post.find(params[:id]) 
    end 
end 
+0

感謝這個偉大的答案,我現在明白了很多! – Andrew

1

您缺少模型update致電PostsController#update這是您的帖子記錄未更新的原因。在PostsController#update行動重定向

def update 
    @post.update(post_params) ## <- add this 
    redirect_to @post 
end 

注意之前更新後的記錄:假設你使用Rails版本> = 4,並在白名單屬性post_params(強參數)。