2016-04-22 32 views
0

私のコードに少し問題があり、そのようなエラーは表示されません。投稿を編集するために2番目のページを作成します。だから、私が投稿を編集したいとき、それは常に変更情報を取る私のdbの最初の投稿です。データベースをアップロードする際にエラーが発生しました

だから、私はどんなひどい間違いがあるのか​​分かると、それはすばらしいことになるでしょう!

ルート:

Rails.application.routes.draw do 
 
    get 'pushs/show' 
 

 
    get 'pushs/edit' 
 

 
    get 'profiles/show' 
 

 
    mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 
 
    
 
    devise_for :users, :controllers => { registrations: 'registrations' } 
 

 
    resources :posts do 
 
    resources :comments 
 
end 
 

 
    get ':pseudo', to: 'profiles#show', as: :profile 
 
    get ':pseudo/edit', to: 'profiles#edit', as: :edit_profile 
 
    patch ':pseudo/edit', to: 'profiles#update', as: :update_profile 
 

 
    get 'push/:post_id', to: 'pushs#show', as: :push 
 
    get 'push/:post_id/edit', to: 'pushs#edit', as: :edit_push 
 
    patch 'push/:post_id/edit', to: 'pushs#update', as: :update_push 
 

 
    root 'posts#index'

プッシュコントローラ:

class PushsController < ApplicationController 
 
    
 
    before_action :authenticate_user! 
 
    before_action :set_push 
 

 
    def show 
 
    @post = Post.find_by(params[:post_id]) 
 
    end 
 

 
    def edit 
 
    end 
 

 

 
def update 
 
    
 
    if @post.update(push_params) 
 
     flash[:success] = 'Your profile has been updated.' 
 
     redirect_to root_path 
 
    else 
 
     @post.errors.full_messages 
 
     flash[:error] = @post.errors.full_messages 
 
     render :edit 
 
    end 
 
    end 
 

 
    private 
 

 
    def push_params 
 
    params.require(:post).permit(:prix, :portion) 
 
    end 
 

 

 
    def owned_push 
 
    @post = Post.find_by(params[:id]) 
 
    unless current_user == @post.user_id 
 
     flash[:alert] = "That prost doesn't belong to you!" 
 
     redirect_to root_path 
 
    end 
 
    end 
 

 

 
    def set_push 
 
    @post = Post.find_by(params[:id]) 
 
    end 
 

 

 

 
end

編集ビュー(プッシュ)

01あなたがより多くを見たい場合は、githubの上の私のコードを確認することができます

<h1>Mettre le Plat en ligne :</h1> 
 

 

 
<div class="posts-wrapper"> 
 
    <div class="post"> 
 
    <div class="post-body"> 
 
     <div class="image-wrap"> 
 
     <%= form_for @post, url: {action: "update"}, html: { multipart: true } do |f| %> 
 
      <div class="row"> 
 
      <div class="col-md-12"> 
 
       <div class="form-group text-center"> 
 
       <h4>prix</h4> 
 
       <%= f.text_area :prix %> 
 
       </div> 
 
      </div> 
 
      </div> 
 
      <div class="row"> 
 
      <div class="col-md-12"> 
 
       <div class="form-group text-center"> 
 
       <h4>portion</h4> 
 
       <%= f.text_area :portion %> 
 
       </div> 
 
      </div> 
 
      </div> 
 
      <div class="form-group text-center"> 
 
      <%= f.submit "Update Post", class: 'btn btn-success' %> 
 
      </div> 
 
     <% end %> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

https://github.com/Mesnet/Beta0.1

+1

エラーメッセージを投稿してください。 – toddmetheny

+0

エラーメッセージはありません。ポストのこの部分を修正しようとすると、この変更が最初のdb postに追加されます。この変更を投稿に適用するには、 –

+0

を編集しますが、paramsハッシュを投稿できますか? – toddmetheny

答えて

0

あなたはのparam post_id@postを探しているが、編集ページに通常のレールアプリケーションを使用している場合に使用するparamは、idだけです。あなたの更新アクションの最初の行に

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

を:

を追加してみてください。それが解決しないかどうか私に教えてください。そして、あなたのフォームを投稿するときにスタックトレースに来るparamsハッシュを含めるように質問を更新してください。

+0

私はあなたがparamsの意味を本当に理解していないので、すべてのプロジェクトをgithubにプッシュします:https://github.com/Mesnet/Beta0.1 –

関連する問題