好的,我在用户签署电子文档后将?document_key=2343t8ujjf
附加到我的重定向url(index of my Partners Controller)
。
我将它存储在index方法的类变量中。但是,我必须使用不同的方法(这里,它的显示)实际将新密钥存储在我的数据库中,因为我必须先使用@partner = Partner.find(params[:id])
才能更新其属性,我无法调用@partner = Partner.find(params[:id])
index因为没有id通过该方法的服务器传递。
当然,我可以用当前存在的id替换params[:id]
,但那将是非常糟糕的做法。我不想从按钮手动调用show,但是甚至自动从索引调用它,它需要一个id。
有没有办法解决这个问题?
class PartnersController < ApplicationController
# GET /partners
# GET /partners.json
def index
@@agreement_key = params[:documentKey]
logger.info "Key: #{@@agreement_key}"
@partners = Partner.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @partners }
end
show # could also just paste parts of show into index but same problem
# other than being able to then use just ivar.
end
# GET /partners/1
# GET /partners/1.json
def show
@partner = Partner.find(params[:id])
logger.info "Key: #{@@agreement_key}"
@partner.update_attributes(
{
:agreement_key => @@agreement_key
}
)
respond_to do |format|
format.html do
redirect_to signed_path( partner_id: @partner.id )
end
format.json { render json: @partner }
end
end
答案 0 :(得分:1)
您应该将值存储在session
。
使用类变量会给您带来一些麻烦,即当有多个用户时,当用户在后续请求中连接到不同的工作人员时,当您在请求之间重新启动服务器时。
您可以在此处详细了解会话存储:http://guides.rubyonrails.org/action_controller_overview.html#session