Ruby on rails 邪恶宝石在更新操作中找不到婚礼ID
我正试图为巫师们实现“邪恶”宝石,但我一辈子都无法发现这个错误。已被引用,并且 我有两个控制器:婚礼和婚礼步骤。用户最初创建婚礼,然后在创建操作重定向到婚礼步骤控制器(使用Wicked)后,使用其他信息更新婚礼模型 在第一步weddingdetails中成功检测到婚礼id,但在提交该步骤后,出现以下错误: 错误 ActiveRecord::在WeddingStepsController更新中未找到RecordNot 找不到没有ID的婚礼: app/controllers/widding_steps_controller.rb:11:in'update' 参数: {“utf8”=>“✓", “_方法”=>“放置”, “真实性令牌”=>“JMd+8gf4rVqOSNMSFrKcD3WxK+X3zvYliSMWqTg0SkE=”, “婚礼”=>{“新娘名”=>“”, “新郎姓名”=>“”, “婚礼日期”=>“”, “婚礼城市”=>“, “婚礼状态”=>“”, “url”=>“”}, “提交”=>“下一步”, “id”=>“婚礼”\u id=11”} 它应该继续到下一步Ruby on rails 邪恶宝石在更新操作中找不到婚礼ID,ruby-on-rails,wizard,wicked-gem,Ruby On Rails,Wizard,Wicked Gem,我正试图为巫师们实现“邪恶”宝石,但我一辈子都无法发现这个错误。已被引用,并且 我有两个控制器:婚礼和婚礼步骤。用户最初创建婚礼,然后在创建操作重定向到婚礼步骤控制器(使用Wicked)后,使用其他信息更新婚礼模型 在第一步weddingdetails中成功检测到婚礼id,但在提交该步骤后,出现以下错误: 错误 ActiveRecord::在WeddingStepsController更新中未找到RecordNot 找不到没有ID的婚礼: app/controllers/widding_step
/wedding\u步骤/eventdetails?wedding\u id=11
,但给出错误并转到/wedding\u步骤/wedding\u id=11
另外值得注意的是,如果没有适当的更新操作,信息将成功保存并重定向到婚礼表演操作
以下是相关代码:
widding\u steps\u 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
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
<%= 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) %>
EVENT DETAILS STEP <!--PLACEHOLDER FOR NOW -->
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'
步骤1:婚礼步骤/weddingdetails.html.erb
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
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
<%= 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) %>
EVENT DETAILS STEP <!--PLACEHOLDER FOR NOW -->
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'
这一行:
<%= simple_form_for(@wedding, :url => wizard_path, :method => :put, html: { class: 'form-horizontal'}) do |f| %>
用这个
scope "weddings/:wedding_id" do
resources :wedding_steps
end
因此,现在一个正确的url看起来像
weddings/83/wedding\u steps/weddingdetails
。您的一个或多个视图帮助程序可能没有正确地包含wedding\u id,使用此新约束,您将在视图中引发错误,但这是一件好事,因为它将显示错误链接的位置。我尝试了提供的解决方案但是,Schneems并不是完全没有错误地运行
改变
resources :wedding_steps
到
问题是参数显示为禁止,这是基于抛出的错误ActiveModel::ForbiddenAttributeError
为了摆脱这个
改变
def update
@wedding = Wedding.find(params[:wedding_id])
@wedding.update_attributes(params[:wedding])
render_wizard @wedding
end
到
执行时请发布控制台。以下是更新操作后我在参数中看到的内容。ID似乎有效,但无法识别下一步?-->
参数:{“utf8”=>“✓“,”真实性令牌“=>”1MfI9JSd0RFoDhOYgxT1pxdouVShlwhI5dwJ4WG1NWQ=“,”婚礼“=>”{bridename=>“Nisha”,“groomname”=>“Arjun”,“weddingdate”=>”,“weddingcity”=>“Houston”,“weddingstate”=>“TX”,“url”=>“arjunisha”},“commit”=>“Next”,“id”=>“wedding”=>“id=83”}完成404未在1ms ActiveRecord中找到::RecordNotFound(找不到没有ID的婚礼):app/controllers/Wedding\u steps\u controller.rb:11:在“更新”中试试这个::url=>向导路径(@Wedding.ID)删除婚礼:@楔。ID部分,它应该只是返回号码,现在尝试了。它似乎仍然没有解决下一步不加载的问题。还有其他的想法吗?在控制器更新动作的代码有什么不对吗?@ Adim邪恶劫持了PARAM的ID部分。@ NishaDhingra,让这个工作你需要你的PAR。ams看起来像这样的{“id”=>“weddingdetails”,“wedding_id”=>83,“wedding”=>{“bridename”=>“Nisha”,#…}
表单应该像这样