Ruby on rails 在变量中存储值

Ruby on rails 在变量中存储值,ruby-on-rails,variables,controllers,class-variables,Ruby On Rails,Variables,Controllers,Class Variables,好的,在用户签署电子文档后,我将?document\u key=2343t8ujjf附加到重定向的url(我的合作伙伴控制器的索引) 我将它存储到index方法中的一个类变量中。但是,我必须使用另一种方法(这里是show)在我的数据库中实际存储新密钥,因为我必须使用@partner=partner.find(params[:id])才能更新其属性,并且我不能在索引中调用@partner=partner.find(params[:id]),因为没有通过该方法的服务器的id 当然,我可以用当前存在的

好的,在用户签署电子文档后,我将
?document\u key=2343t8ujjf
附加到重定向的
url(我的合作伙伴控制器的索引)

我将它存储到index方法中的一个类变量中。但是,我必须使用另一种方法(这里是show)在我的数据库中实际存储新密钥,因为我必须使用
@partner=partner.find(params[:id])
才能更新其属性,并且我不能在索引中调用
@partner=partner.find(params[:id])
,因为没有通过该方法的服务器的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
class PartnersController@@agreement\密钥
}
)
回应待办事项|格式|
format.html做什么
将\u重定向到已签名的\u路径(partner\u id:@partner.id)
结束
format.json{render json:@partner}
结束
结束

您应该将值存储在
会话中

使用类变量会给您带来一些麻烦,例如,当有多个用户时,当用户在后续请求中连接到不同的工作者时,当您在请求之间重新启动服务器时


您可以在此处阅读有关会话存储的更多信息:

请记住,从
index
调用
show
当前将导致错误,因为Rails将命中两条渲染指令。也许您想将更新代码分解成一个私有方法,并从这两个方法调用它,这样它们各自维护自己的呈现调用。谢谢,是的,我已经去掉了它。:-)谢谢