【发布时间】:2026-01-27 08:30:02
【问题描述】:
好的,所以在用户签署电子文档后,我将?document_key=2343t8ujjf 附加到我重定向的url(index of my Partners Controller)。
我将它存储到 index 方法中的类变量中。但是,我必须使用不同的方法(此处显示)将新密钥实际存储在我的数据库中,因为我必须使用 @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
【问题讨论】:
-
请记住,从
index调用show当前会导致您出错,因为 Rails 会遇到两条渲染指令。也许您想将更新代码分解为一个私有方法并从两者中调用它,以便它们各自维护自己的渲染调用。 -
谢谢,是的,我已经把它拿出来了。 :-) 谢谢!
标签: ruby-on-rails variables controllers class-variables