ウィザード用の「Wicked」ジェムを実装しようとしていますが、このエラーを一生理解できません。すでにRyan bates railscast #346とschneemsによるステップバイステップのチュートリアルを参照しています。
Weddings と Wedding_steps の 2 つのコントローラーがあります。ユーザーは最初に Wedding を作成し、作成アクションが Wedding_steps コントローラー (Wicked を使用) にリダイレクトされた後、追加情報でウェディング モデルを更新します。
wedding_id は最初のステップ weddingdetails で正常に検出されますが、そのステップを送信した後、次のエラーが発生します。
エラー
ActiveRecord::WeddingStepsController の RecordNotFound#update
ID なしで Wedding が見つかりませんでした: app/controllers/wedding_steps_controller.rb:11:in `update'
パラメーター:
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"JMd+8gf4rVqOSNMSFrKcD3WxK+X3zvYliSMWqTg0SkE=", "結婚式"=>{"花嫁名"=>"", "花婿の名前"=>"", "weddingdate"=>"", "weddingcity"=>"", "weddingstate"=>"", "url"=>""}, "commit"=>"Next", "id "=>"wedding_id=11"}
次のステップに進むはずです/wedding_steps/eventdetails?wedding_id=11
が、代わりにエラーが発生して次のステップに進みます/wedding_steps/wedding_id=11
また、Update アクションが配置されていない場合、情報は正常に保存され、Wedding Show アクションにリダイレクトされることにも注意してください。
関連するコードは次のとおりです。
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
STEP 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) %>
STEP 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'