2016-03-08 36 views
1

當我在創建表單中保存PayerContract時,它將保存PayerContract並創建一個「您創建的PayerContract {X}成功」,其中{X}是PayerContract名稱,並重定向用戶回到索引。我想讓用戶點擊{X}轉到該PayerContract的編輯頁面。鏈接到軌道索引中的產品

在我的索引頁,我有:

= link_to t('payer_contracts.edit'), edit_payer_contract_path()) 

我需要給PayerContract.id到edit_payer_contract_path功能。因此,它會看起來像edit_payer_contract_path(330)

我也顯示在我的控制器警告消息是這樣的:

def create 
    payer_contract_params = PayerContract.assign_params_to_payer_contract(params) 
    @payer_contract = PayerContract.new(payer_contract_params) 
    respond_to do |format| 
     begin 
     if @payer_contract.save 
      format.html { redirect_to payer_contracts_path, notice: t('common.successfully_created', entity: @payer_contract.description) } 
     end 
     end 
    end 
    end 

我發現,當我做類似: edit_payer_contract_path(PayerContract.find())它返回所有看起來PayerContract例如:預計屬性哈希,得到[{"id"=>224, "name" ="hello", "id"=> 332, "name" = "hello2", "id"=>555, "name" = "sup" }]

如何正確地將用戶鏈接到他們剛剛創建的PayerContract?

回答

0

你可以有兩種方法。沿着您的redirect_to方法傳遞參數。顯然,通過新創建的PayerContract的ID。通過這種方式,您將在params中擁有該ID,您可以在link_to方法中使用該ID。

如果您不想傳遞該參數,請嘗試在成功創建PayerContract後將新創建的PayerContract存儲在會話中。這樣,後重定向你仍然有從會話 類似下面

def create 
    @foo = Foo.new(foo_params) 
    if foo.save 
    session[:foo_id] = @foo.id 
    redirect_to foo_path 
    end 
end 
+0

試着這樣做,但它是不工作... – Jay266

0

訪問存儲的數據作爲beniutek說,你可以在redirect_to的傳遞參數。但是當用戶第一次訪問索引頁面id時沒有定義,所以你可以在視圖中查看是否定義瞭如下設置id到link_to。

def create 
    payer_contract_params = PayerContract.assign_params_to_payer_contract(params) 
    @payer_contract = PayerContract.new(payer_contract_params) 
    respond_to do |format| 
     begin 
     if @payer_contract.save 
      format.html { redirect_to payer_contracts_path(id: @payer_contract.id), notice: t('common.successfully_created', entity: @payer_contract.description) } 
     end 
     end 
    end 
    end 

鑑於

if params[:id].present? 
    = link_to t('payer_contracts.edit'), edit_payer_contract_path(params[:id].to_i)) 
+0

它仍然無法找到的edit_payer_contract_path ID。任何想法? – Jay266

+0

你好,約翰請看到最新的答案。您需要將params id設置爲edit_payer_contract_path(params [:id] .to_i) –

+0

同時在t()中傳遞參數不會發送到您的索引頁面。您需要payer_contracts_path(id:@ payer_contract.id)。我希望更新的答案應該解決此問題。 –