2017-10-12 146 views
0

我有兩種模式。首先是Taxirecord,第二是停車場。每個Taxirecord可能有自己的停車場。將taxirecord_id傳遞到停車場記錄時遇到問題。我有路線Ruby on Rails - 從另一個控制器傳遞ID

car_new GET /taxidetail/:taxirecord_id/carpark/new(.:format) carparks#new 

而且我想通過:taxirecord_id,即im編輯的taxirecord的id到我的創建控制器。 我的停車場模型:

class Carpark < ActiveRecord::Base 
    belongs_to :taxirecord 
end 

在控制器IM基於PARAM發現taxirecord_id通過查找功能:taxirecord_id,但ID爲nil被調用時創建。你能幫我找出我做錯了什麼,我該如何解決這個問題?謝謝你的幫助!

我的停車場控制器

class CarparksController < ApplicationController 
    def new 
      @car = Carpark.new 
    end 
    def create 
      @car = Carpark.new(carpark_params, taxirecord_id: Taxirecord.find(params[:taxirecord_id])) 
      if @car.save 
        flash[:notice] = "Zaznam byl ulozen" 
        redirect_to root_path 
      else 
        flash[:notice] = "Zaznam nebyl ulozen" 
        render 'new' 
      end 

    end 
private def carpark_params 
       params.require(:carpark).permit(:car_brand, :car_type, :driver_name, :driver_tel) 
     end 

end 
+0

你的控制器裏有什麼?以及你如何執行該路線的請求? –

+0

請**顯示您的完整代碼**,而不僅僅是您的代碼的描述。我懷疑問題在於你沒有使用必要的屬性來調用'permit',但是我無法在沒有看到代碼的情況下正確回答你的問題! –

+0

我不相信有可能弄清楚你在這裏的意思。你需要描述一下你的願望。顯示更多代碼可能會有所幫助。也許是前後的情況。 – kaspernj

回答

0

我終於得到它的工作 伊夫添加<%=link_to 'New Carpark', {:controller => "carparks", :action => "new", :taxirecord_id => @taxi_record.id }%> 我taxirecord形式和停車場形式<%= hidden_field_tag :taxirecord_id, params[:taxirecord_id] %> 和我的停車場控制器:大家的大力支持和HEL @carpark.taxirecord_id = params[:taxirecord_id] 謝謝p!

+0

很高興它的工作 - 快速瀏覽Rails路由(http://guides.rubyonrails.org/routing.html)鏈接格式 - 是一種自動生成的路線,您可以在傳統方法的「link_to」字段中使用該路線。 如果你有時間,有一個玩我的答案 - 我個人覺得這是'Railsy'的方式來做到這一點:) 另外,如果你的隱藏領域的工作,因爲它應該是,你應該能夠' carpark_params'將其傳入,而不需要額外的線路分配它。祝好運與其餘的項目! – SRack

+0

最後,我不知道爲什麼有人的投票你的問題 - 我從+1 :) – SRack

+0

非常感謝@SRack。我非常感謝您的支持和幫助! :) –

0

我傾向於使用類似傾斜:在創建操作

before_action :assign_taxirecord 

... 

private 

def assign_taxirecord 
    @taxirecord = TaxiRecord.find(params[:taxirecord_id]) 
end 

然後:

def create 
    @car = @taxirecord.build_carpark(carpark_params) 
    ... 
end 

顯然有需要一點剪裁根據您的要求(即爲什麼行動稱爲before_action),但我希望這一點幫助!

+0

非常感謝,我給它看看:) –

+0

歡迎!我從內存中記下了它,並且相信'build_carpark'方法是在has_one/belongs_to方法中自動創建的。如果不是這種情況,有一個補鍋匠/請讓我知道:) – SRack

0

無需發送taxirecord id。只要做到這樣

類停車場< ApplicationRecord belongs_to的:taxirecord 結束

類Taxirecord < ApplicationRecord HAS_ONE:停車場 結束

Rails.application.routes.draw做 資源:taxirecords做 資源:停車場 結束 結束

,然後新taxirecord 噸做 = Taxirecord.new(:註冊=> 「EFGH」,:描述=> 「測試」)

新停車場 t.create_carpark(:描述=> 「ABCD」 )

=>#

+0

爲什麼它不能是這樣的: Taxirecord編輯表單: '<%=的link_to '新停車場',new_carpark_path(@taxi_record)%>' 並在停車場管制員 '@carpark.taxirecord_id = @ taxi_record.id' ? 謝謝! –

+0

請粘貼您的模型控制器和路線代碼 –

+0

在carpark_params中添加taxirecord_id 1st –

相關問題