0

我有一個房東和一個房東公司的模型。我試圖在創建新的landlord_company後,將landlord_id傳遞給landlord_company表。我在landlord_company窗體中有一個f.hidden_​​field,但它不起作用。不在另一個表中保存唯一的ID - Rails 4

地主模式:

has_many :landlord_companies 

landlord_company模型:

belongs_to :landlord 

landlord_company控制器:

def new 
    @landlord_company = LandlordCompany.new 
end 

def create 
    @landlord_company = LandlordCompany.new(landlord_company_params) 
    @landlord = Landlord.find(params[:landlord_id]) 

    respond_to do |format| 
     if @landlord_company.save 
     format.html { redirect_to @landlord_company, notice: 'Landlord company was successfully created.' } 
     format.json { render :show, status: :created, location: @landlord_company } 
     else 
     format.html { render :new } 
     format.json { render json: @landlord_company.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

landlord_company形式:

<div class="feedback-container"> 
    <%= form_for @landlord_company, url: {action: "create"}, html: {class: "new.html.erb"} do |f| %> 
     <% if @landlord_company.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@landlord_company.errors.count, "error") %> prohibited this landlord_company from being saved:</h2> 

      <ul> 
      <% @landlord_company.errors.full_messages.each do |message| %> 
       <li><%= message %></li> 
      <% end %> 
      </ul> 
      </div> 
     <% end %> 

     <div class="field"> 
      <%= f.label :llc_name, class: "general-text-label" %><br> 
      <%= f.text_field :llc_name, class: "general-text-field" %> 
     </div> 
     <div class="field"> 
      <%= f.hidden_field :landlord_id, :value => params[:landlord_id] %> 
     </div><br> 
     <div class="actions"> 
      <%= f.submit "Submit", class: "btn btn-black btn-4x" %> 
     </div> 
    <% end %> 
    </div> 

的routes.rb:

resources :landlords do 
    member do 
     resources :landlord_companies 
    end 
end 
+0

在您的創建操作中,添加以下行:puts params.inspect並向我們顯示控制檯的輸出。這可能是因爲樓主標識沒有發送到新的操作,因此無 – bkunzi01

+0

@ bkunzi01這是puts.params輸出。 { 「UTF8」=> 「✓」, 「authenticity_token」=> 「3F/ZM/SbXO/0dCsQkTtYPh4HaDwk1f3HAJ77NpLNMw2FHMt0fXt2QxEpnoTbmSSnmQUfwmuPsrAAKl/meieDEA ==」, 「landlord_company」=> { 「llc_name」=> 「2」, 「landlord_id」= >「」},「commit」=>「Submit」,「controller」=>「landlord_companies」,「action」=>「create」,「id」=>「21」} –

回答

0

經過近一天的工作,我找到了錯誤。我錯誤地嵌套了我的資源。我把它們當作...

resources :landlords do 
    member do 
     resources :landlord_companies 
    end 
end 

......並且正在搞亂一切!菜鳥的錯誤。

1

更改您創建行動如下:

def create 
    @landlord_company = Landlord.landlord_companies.new(landlord_company_params) 

然後確保到landlord_id添加到白名單PARAMS在「landlord_company_params」方法,它會自動地爲你處理關聯。

+0

我做了你說的,現在得到一個NoMethodError - undefined方法'landlord_companies'爲#

+0

任何想法,爲什麼這不工作? –

+0

您的房東_id是空白值「」,而它必須是房東的主鍵。你的新動作需要將params [landlord_id]傳遞給它,以便它可以通過隱藏的表單字段輸入該值。 – bkunzi01

相關問題