2016-04-22 13 views
0

Ich habe ein kleines Problem mit meinem Code, und ich sehe nie diese Art von Fehler, ich mache eine zweite Seite, um meinen Beitrag zu bearbeiten (zB wie eine Profilseite mit Gerät). Also, wenn ich einen Beitrag bearbeiten möchte, ist es immer der erste Post meiner db, der die Änderungsinformationen übernimmt.Fehler beim Hochladen meiner db

Also wenn Sie sehen können, welche schrecklichen Fehler ich mache, wird es erstaunlich sein !!

Routes:

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'

Push-Controller:

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

Bearbeiten Ansichten (push)

<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>

Wenn Sie mehr sehen wollen, können Sie meinen Code auf Github überprüfen: https://github.com/Mesnet/Beta0.1

+1

Bitte schreiben Sie die Fehlermeldung. – toddmetheny

+0

Es gibt keine Fehlermeldung, ist nur, dass wenn ich versuche, diesen Teil des Beitrags zu ändern, diese Änderung zu meinem ersten DB-Post hinzugefügt wird. Während ich möchte, dass diese Änderung auf den Beitrag –

+0

angewendet wird, können Sie den Params-Hash posten? – toddmetheny

Antwort

0

Sie up @post mit dem param post_id, aber auf der Bearbeitungsseite suchen die param werden Sie normalerweise verwenden, wenn Sie eine herkömmliche Schienen App haben, ist nur ID.

Versuche Zugabe:

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

auf der ersten Zeile der Update-Aktion. Lass es mich wissen, wenn sich das nicht löst. Bitte aktualisieren Sie Ihre Frage so, dass sie den Params-Hash enthält, der beim Ablegen des Formulars in der Stack-Trace angezeigt wird.

+0

Nun, ich verstehe nicht wirklich, was Sie mit Params meinen, also schiebe ich mein ganzes Projekt auf GitHub: https: //github.com/Mesnet/Beta0.1 –

Verwandte Themen