:id => "info" 错误 rails 检索参数时的错误形式
:id => "info" error rails wicked forms when retrieving params
我是 wicked form 的新手,我一直在关注 railcast episode on wicked forms,但我一直收到此错误 "Couldn't find Company with 'id'=info"。所以我知道问题显然出在我的控制器某处。我知道这是非常简单的事情,我只是在绞尽脑汁,所以我知道你们会提供巨大的帮助。这是代码,感谢所有帮助!
公司控制人代码:
def create
@company = Company.new(company_params)
respond_to do |format|
if @company.save
@object = @company.id
format.html { redirect_to(company_steps_path(@company)) }
format.json { render :show, status: :created, location: @company }
else
format.html { render :new }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
company_steps 控制器代码:
class CompanyStepsController < ApplicationController
include Wicked::Wizard
steps :info, :address, :quote
def show
@company = Company.find(params[:id])
render_wizard
end
def update
@company = Company.where(id: params[:id])
@company.attributes = params[:company]
render_wizard @company
end
end
当您使用#find 并且未找到记录时,ActiveRecord 引发 ActiveRecord::RecordNotFound 并显示 "Couldn't find Company with id='somevalue'".
之类的消息
我假设你的 id 列是整数类型,而你传递的是一个字符串。
在你的#show 方法中 params[:id] == 'info'.
检查您的 link_to、redirect_to 和路线。
在某些时候,您会生成此 url http://localhost:3000/company_steps/info(可能在视图中)。
你对它做了一个 GET 请求,匹配 GET "/company_steps/:id" company_steps#show.
#show 方法在控制器 CompanyStepsController 中调用,参数 [:id] == 'info'.
正如我们之前看到的,您会得到一个 ActiveRecord::RecordNotFound 异常,因为 ActiveRecord 无法找到 ID 为 'info'.
的记录
您的控制器中出现错误,但问题可能出在您的视图或重定向中。您需要一个 id 并传递一个字符串。
编辑:如评论中所述
Ok params[:id] == 'info'由wicked生成。
他们使用 id 来控制步骤的流程。
您需要使用嵌套路由让 rails 生成类似 params[:company_id].
的东西
资源:公司做
资源:步骤,控制器:'companies/steps'
结束
所以佣金路线应该给你:
/公司/:company_id/steps/:id
在控制器中
参数[:company_id] == 42
参数[:id] == 'info'
https://github.com/schneems/wicked/wiki/Building-Partial-Objects-Step-by-Step
我是 wicked form 的新手,我一直在关注 railcast episode on wicked forms,但我一直收到此错误 "Couldn't find Company with 'id'=info"。所以我知道问题显然出在我的控制器某处。我知道这是非常简单的事情,我只是在绞尽脑汁,所以我知道你们会提供巨大的帮助。这是代码,感谢所有帮助!
公司控制人代码:
def create
@company = Company.new(company_params)
respond_to do |format|
if @company.save
@object = @company.id
format.html { redirect_to(company_steps_path(@company)) }
format.json { render :show, status: :created, location: @company }
else
format.html { render :new }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
company_steps 控制器代码:
class CompanyStepsController < ApplicationController
include Wicked::Wizard
steps :info, :address, :quote
def show
@company = Company.find(params[:id])
render_wizard
end
def update
@company = Company.where(id: params[:id])
@company.attributes = params[:company]
render_wizard @company
end
end
当您使用#find 并且未找到记录时,ActiveRecord 引发 ActiveRecord::RecordNotFound 并显示 "Couldn't find Company with id='somevalue'".
之类的消息我假设你的 id 列是整数类型,而你传递的是一个字符串。
在你的#show 方法中 params[:id] == 'info'.
检查您的 link_to、redirect_to 和路线。
在某些时候,您会生成此 url http://localhost:3000/company_steps/info(可能在视图中)。
你对它做了一个 GET 请求,匹配 GET "/company_steps/:id" company_steps#show.
#show 方法在控制器 CompanyStepsController 中调用,参数 [:id] == 'info'.
正如我们之前看到的,您会得到一个 ActiveRecord::RecordNotFound 异常,因为 ActiveRecord 无法找到 ID 为 'info'.
的记录您的控制器中出现错误,但问题可能出在您的视图或重定向中。您需要一个 id 并传递一个字符串。
编辑:如评论中所述
Ok params[:id] == 'info'由wicked生成。 他们使用 id 来控制步骤的流程。 您需要使用嵌套路由让 rails 生成类似 params[:company_id].
的东西资源:公司做 资源:步骤,控制器:'companies/steps' 结束
所以佣金路线应该给你: /公司/:company_id/steps/:id
在控制器中 参数[:company_id] == 42 参数[:id] == 'info'
https://github.com/schneems/wicked/wiki/Building-Partial-Objects-Step-by-Step