Programim dhe zhvillim, javascript, python, php, html

Perlë e keqe nuk mund të gjejë ID-në e dasmës në veprimin e përditësimit

Unë jam duke u përpjekur për të zbatuar perlë 'Wicked' për magjistarët dhe nuk mund ta kuptoj këtë gabim për jetën time. I referuar tashmë Ryan bates railscast #346 dhe tutorial hap pas hapi nga schneems.

Unë kam 2 kontrollues: Weddings dhe Wedding_steps. Përdoruesi fillimisht krijon një Dasmë dhe pas veprimit të krijimit ridrejtohet te kontrolluesi Wedding_steps (i cili përdor Wicked) për të përditësuar modelin e dasmës me informacion shtesë.

Wedd_id zbulohet me sukses në detajet e dasmës në hapin e parë, por pas paraqitjes së këtij hapi, marr gabimin e mëposhtëm:

GABIM

ActiveRecord::RecordNuk u gjet në WeddingStepsController#update

Nuk mund të gjeja Dasmën pa një ID: app/controllers/wedding_steps_controller.rb:11:në "përditësim"

Parametrat:

{utf8=›✓, _method=›vendos, autenticitet_token=›JMd+8gf4rVqOSNMSFrKcD3WxK+X3zvYliSMWqTg0SkE=, dasmë=›{bridename=›, groomname=›, dasmës=›, dasmësle=>›, statistika e dasmës=}›, dasma jonë commit=›Next, id=›wedding_id=11}

Supozohet të vazhdojë në hapin tjetër /wedding_steps/eventdetails?wedding_id=11 por në vend të kësaj jep gabimin dhe shkon në /wedding_steps/wedding_id=11

Gjithashtu vlen të përmendet se pa veprimin "Përditësimi" në vend, informacioni ruhet me sukses dhe ridrejtohet te veprimi i shfaqjes së dasmës.

Këtu është kodi përkatës:

wedding_steps_controller.rb

class WeddingStepsController < ApplicationController
include Wicked::Wizard
steps :weddingdetails, :eventdetails

def show
    @wedding = Wedding.find(params[:wedding_id])
    render_wizard
end

def update
    @wedding = Wedding.find(params[:wedding_id])
    @wedding.update_attributes(params[:wedding])
    render_wizard @wedding
end

end

weddings_controller.rb

def create
@wedding = current_user.weddings.new(params[:wedding])


respond_to do |format|
  if @wedding.save
    format.html { redirect_to wedding_steps_path(:id => "weddingdetails", :wedding_id => @wedding.id) }
    format.json { render json: @wedding, status: :created, location: @wedding }
  else
    format.html { render action: "new" }
    format.json { render json: @wedding.errors, status: :unprocessable_entity }
  end
end
end

HAPI 1: wedding_steps/weddingdetails.html.erb

<%= simple_form_for(@wedding, :url => wizard_path(wedding_id: @wedding.id), :method => :put, html: { class: 'form-horizontal'}) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">


<div class="formrow center">
  <%= f.input :bridename, placeholder: "The Bride's Name", label: false %>
  <h2 class="inline">  &</h2>
  <%= f.input :groomname, placeholder: "The Groom's Name", label: false %>
</div>


<div class="formrow center">
  <%= f.text_field :weddingdate %> 
  <!-- OLD STYLE DATE FORMAT <%= f.input :weddingdate, label: "Wedding Date" %> -->
  <%= f.input :weddingcity, label: "City" %>
  <%= f.input :weddingstate, label: "State" %>
</div>


<div class="formrow center"> 
  <%= f.input :url, placeholder: "i.e. 'johnandkate' ", label: false %> 
</div>

</div>


<div class="form-actions center">
<%= f.button :submit, value: "Next" %>
</div>



<% end %>

<%= link_to 'skip', next_wizard_path(wedding_id: @wedding.id) %>

HAPI 2: wedding_steps/eventdetails.html.erb

EVENT DETAILS STEP <!--PLACEHOLDER FOR NOW -->

Routes.rb

Jobshop::Application.routes.draw do    
    resources :pins
    resources :weddings
    resources :wedding_steps  

    get "users/show"

    root :to => 'pages#home'
    get 'about' => 'pages#about'

    devise_for :admin_users, ActiveAdmin::Devise.config
    ActiveAdmin.routes(self)

    resources :inviterequests


    devise_for :views
    ActiveAdmin.routes(self)

    devise_for :users
    ActiveAdmin.routes(self)

    match 'users/:id' => 'users#show'

    

  • Kur të ekzekutohet, ju lutemi postoni konsolën. 12.08.2013

Përgjigjet:


1

Kjo linjë:

<%= simple_form_for(@wedding, :url => wizard_path, :method => :put, html: { class: 'form-horizontal'}) do |f| %>

Duhet te jete:

<%= simple_form_for(@wedding, :url => wizard_path(wedding_id: @wedding.id), :method => :put, html: { class: 'form-horizontal'}) do |f| %>

Vini re wizard_path(wedding_id: @wedding.id) Kur dorëzoni formularin, duhet të shihni parameters = {:wedding_id => some_number} në regjistrat.

Ngjitni daljen e params për veprimin e përditësimit nëse nuk funksionon.

Redakto:

Ju duhet të keni ":wedding_id" si pjesë e url-së së kërkuar, kjo do ta bëjë të pamundur edhe gjenerimin e një lidhjeje me atë kontrollues, përveç nëse ka një url të formatuar siç duhet.

Zëvendësoni këtë

resources :wedding_steps

me këtë

  scope "weddings/:wedding_id" do
    resources :wedding_steps
  end

Pra, tani një url e saktë do të dukej si weddings/83/wedding_steps/weddingdetails. Ka të ngjarë që një ose më shumë nga ndihmësit tuaj të pamjes të mos përfshijnë wedding_id siç duhet dhe me këtë kufizim të ri do të ngreni një gabim në pamje, por kjo është një gjë e mirë pasi do t'ju tregojë se ku është lidhja e keqformuar.

12.08.2013
  • Ja çfarë po shoh në parametrat pas veprimit të përditësimit. ID-ja duket se funksionon, por nuk po e njeh hapin tjetër? ------› Parameters: {"utf8"=>"✓", "authenticity_token"=>"1MfI9JSd0RFoDhOYgxT1pxdouVShlwhI5dwJ4WG1NWQ=", "wedding"=>{"bridename"=>"Nisha", "groomname"=>"Arjun", "weddingdate"=>"", "weddingcity"=>"Houston", "weddingstate"=>"TX", "url"=>"arjunisha"}, "commit"=>"Next", "id"=>"wedding_id=83"} Completed 404 Not Found in 1ms ActiveRecord::RecordNotFound (Couldn't find Wedding without an ID): app/controllers/wedding_steps_controller.rb:11:in 'update' 12.08.2013
  • provojeni këtë në vend të kësaj: :url =› wizard_path(@wedding.id) hiqni dasmën: pjesën @wedding.id, duhet të kthejë numrin tani 13.08.2013
  • e provoi edhe atë. ende nuk duket se e rregullon problemin e mos ngarkimit të hapit tjetër. ndonjë ide tjetër? a ka ndonjë gjë të gabuar me kodin në veprimin e përditësimit të kontrolluesit? 15.08.2013
  • @Adim Wicked rrëmben pjesën id të paramit. 15.08.2013
  • @NishaDhingra për ta bërë këtë të funksionojë, ju duhen parametrat tuaj që të duken diçka si kjo {"id" => "weddingdetails", "wedding_id" => 83, "wedding"=>{"bridename"=>"Nisha", # ... } Formulari duhet të duket diçka si kjo <form action="/wedding_steps/weddingdetails?wedding_id=83" Unë kurrë nuk e kam përdorur wicked with simple_form 15.08.2013
  • @Schneems, po kjo është ajo që po shoh në hapin e parë të magjistarit. Kur godas më pas për të shkuar në hapin e dytë, duhet të jetë <form action="/wedding_steps/eventdetails?wedding_id=83", por në vend të kësaj thjesht tregon <form action="/wedding_steps/83" ..kjo është ajo ku po mbërthehem se si ta rregulloj. 15.08.2013
  • Pasi ta dorëzoni formularin herën e parë, ai duhet të kthehet në veprimin e përditësimit dhe më pas të japë eventdetails.html.erb, si duket ai ndihmës i formularit? Mund ta përditësoni pyetjen tuaj? Gjithashtu lidhja juaj e kapërcimit ka nevojë edhe për wedding_id. 16.08.2013
  • Sapo përditësova pyetjen me një gabim më të detajuar, skedarin e rrugëve dhe formularin e përditësuar. Na vjen keq, unë jam mjaft i ri në rails dhe me sa mund të them nuk ka asnjë ndihmës formulari. A mund të nxjerrësh ndonjë të re nga këto përditësime? 16.08.2013
  • Për itineraret tuaja rekomandoj të vendosni ":wedding_id" në objektin tuaj. Në këtë mënyrë do të jetë e pamundur të godasësh edhe kontrolluesin pa një URL të formuar siç duhet. Përditësova përgjigjen time për të përfshirë sugjerimin tim për një fushëveprim. 16.08.2013
  • Thx, kjo është e dobishme. Tani shoh sa vijon. Po përpiqeni të rregulloni linjën e parë të përditësimit? Started PUT "/weddings/14/wedding_steps/wedding_id=14" ... Processing by WeddingStepsController#update as HTML Parameters: {"utf8"=>"✓", ... "commit"=>"Next", "wedding_id"=>"14", "id"=>"wedding_id=14"} Wedding Load (0.2ms) SELECT "weddings".* FROM "weddings" WHERE "weddings"."id" = ? LIMIT 1 [["id", "14"]] (0.1ms) begin transaction (0.1ms) commit transaction (0.1ms) begin transaction (0.0ms) commit transaction Redirected to http://localhost:3000/weddings/14/wedding_steps/wicked_finish 17.08.2013
  • Kjo është e çuditshme, i ligu duhet të bëjë gjënë e duhur automatikisht për ju, por ju mund ta detyroni atë të bëjë gjënë e duhur duke ndryshuar rrugën tuaj në këtë wizard_path(step, wedding_id: @wedding.id) që duhet të detyrojë :id të jetë i njëjtë me step 17.08.2013
  • PO, kjo funksionoi. Faleminderit për ndihmën dhe durimin tuaj @Schneems. 23.08.2013

  • 2

    Provova zgjidhjen e ofruar nga Schneems, por nuk po funksionon plotësisht pa gabime. Unë zbatova mënyrën e mëposhtme.

    Ndryshimi

    resources :wedding_steps
    

    To

    scope "weddings/:wedding_id" do
      resources :wedding_steps
    end
    

    Problemi është se parametrat shfaqen si të ndaluar bazuar në gabimin që është hedhur si ActiveModel::ForbiddenAttributesError

    Për të hequr qafe këtë,

    Ndryshimi

    def update
      @wedding = Wedding.find(params[:wedding_id])
      @wedding.update_attributes(params[:wedding])
      render_wizard @wedding
    end
    

    To

    def update
      @wedding = Wedding.find(params[:wedding_id])
      @wedding.update_attributes(wedding_params)
      render_wizard @wedding
    end
    
    private 
    def wedding_params
      params.require(:wedding).permit(........your parameters here.................)
    end
    
    02.11.2014
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..