0

好的,所以在用户签署电子文档后,我已?document_key=2343t8ujjf被附加到我的重定向中。url(index of my Partners Controller)

我将它存储到索引方法中的类变量中。但是,我必须使用不同的方法(此处显示)将新密钥实际存储在我的数据库中,因为我必须先使用@partner = Partner.find(params[:id])才能更新其属性,并且我无法调用@partner = Partner.find(params[:id])索引,因为没有 id 通过服务器传递那个方法。

当然,我可以用params[:id]当前存在的 id 替换,但这将是非常糟糕的做法。我不想从按钮手动调用显示,但即​​使从索引自动调用它,它也需要一个 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
4

1 回答 1

1

您应该将值存储在session.

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

您可以在此处阅读有关会话存储的更多信息:http: //guides.rubyonrails.org/action_controller_overview.html#session

于 2013-02-15T10:32:15.030 回答