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'
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{"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<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.2013eventdetails.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ërwedding_id
. 16.08.2013":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.2013Started 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.2013wizard_path(step, wedding_id: @wedding.id)
që duhet të detyrojë :id të jetë i njëjtë mestep
17.08.2013