2017-05-04 13 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

モデルがありませんupdatePostsController#updateあなたのポストレコードが更新されていない理由です。あなたはRailsのバージョン> = 4を使用していて、post_paramsの属性(強いパラメータ)をホワイトリストされていると仮定すると:PostsController#updateアクションで

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

NOTEをリダイレクトする前に、ポストレコードを更新します。

関連する問題