Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 邪恶宝石在更新操作中找不到婚礼ID_Ruby On Rails_Wizard_Wicked Gem - Fatal编程技术网

Ruby on rails 邪恶宝石在更新操作中找不到婚礼ID

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

我正试图为巫师们实现“邪恶”宝石,但我一辈子都无法发现这个错误。已被引用,并且

我有两个控制器:婚礼和婚礼步骤。用户最初创建婚礼,然后在创建操作重定向到婚礼步骤控制器(使用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”}

它应该继续到下一步
/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”,#…}
表单应该像这样