2013-02-15 153 views
0

好吧,所以我有?document_key=2343t8ujjf附加到我的重定向url(index of my Partners Controller)用户签署电子文档后。存储值变量

我将它存储到索引方法的类变量中。但是,我必须使用一种不同的方法(这里是显示)来实际将新密钥存储在我的数据库中,因为在更新其属性之前我必须使用@partner = Partner.find(params[:id]),并且我不能在索引中调用@partner = Partner.find(params[:id]),因为没有id会通过该方法的服务器。

当然,我可以用当前存在的id代替params[: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 
+0

记住,从'index'调用'show'目前会使你错误,因为Rails会命中两个渲染指令。也许你想将更新代码分解成一个私有方法并从两个方法中调用它们,以便它们各自维护它们自己的渲染调用。 – Chowlett 2013-02-15 10:35:54

+0

谢谢,是的,我已经把它解决了。 :-) 谢谢! – myData 2013-02-15 23:29:24

回答