0

我正在開發一個大學的應用程序,用戶可以登錄&上傳遠足徑的細節。外鍵不更新

到目前爲止一切正常&我也在每條遠足徑中實現了照片的嵌套形式。用戶可以登錄&創建遠足。

我想顯示的用戶創建在那裏顯示/個人資料頁,但是當我在我的數據庫&在我的模型中has_many & belongs_to選項所設置的關係,所有的上漲。我也試圖用嵌套accepts_nested_attributes_for :hikingtrails做到這一點,它沒有任何工作。

我檢查了我的數據庫,當用戶創建遠足路徑時,它並未更新表中的user_id字段。

我不知道如果我完全錯誤地處理這個問題,是否應該查看多態關聯?

class User < ActiveRecord::Base 
    attr_accessible :user_name, :email, :password, :password_confirmation, :photos_attributes, :hikingtrails_attributes 


    has_many :hikingtrails 
    accepts_nested_attributes_for :hikingtrails, :allow_destroy => :true, :reject_if => :all_blank 




class Hikingtrail < ActiveRecord::Base 
    attr_accessible :description, :name, :looped, :photos_attributes,:directions_attributes, :user_id 


    has_many :photos 
    has_many :trails 
    has_many :directions 
    belongs_to :user 

用戶/ show.html.erb

<div class="page-header"> 
    <h1>Your Profile</h1> 
</div> 


<p> 
    <b>username:</b> 
    <%= @user.user_name %> 
</p> 

<p> 
    <b>email:</b> 
    <%= @user.email %> 
</p> 

<h4>Small Photos</h4> 
<% @user.photos.each do |photo| %> 
<%= image_tag photo.image_url(:thumb).to_s %> 
<% end %> 

<h4>Hiking Trails</h4> 
<% @user.hikingtrails.each do |hk| %> 
<%= hk.name %> 
<% end %> 

<%= link_to "Edit your Profile", edit_user_path(current_user), :class => 'btn btn-mini' %> 

回答

1

您還沒有添加:user_id在Hikingtrail模型可訪問的屬性。請嘗試以下操作:

attr_accessible :description, 
            :duration_hours, 
            :duration_mins, 
            :name, 
            :looped, 
            :addr_1, 
            :addr_2, 
            :addr_3, 
            :country, 
            :latitude, 
            :longitude, 
            :photos_attributes, 
            :trails_attributes, 
            :directions_attributes, 
            :user_id 

UPDATE: 看到表單代碼後,我認爲它可能沒有必要做以上並可能也是不安全。相反,不設置通過質量分配user_ID的,但處理用戶分配在您的控制器像這樣:

class HikingtrailsController < ApplicationController 
    # ... 
    def create 
    @hikingtrail = Hikingtrail.new(params[:hikingtrail]) 
    @hikingtrail.user = current_user 
    if @hikingtrail.save 
     # ... 
    else 
     # ... 
    end 
    end 
end 

希望這有助於:)

+0

好點,但它仍然無法正常工作和拋出返回沒有錯誤,當我檢查數據庫user_id還沒有更新 – Holly 2013-04-08 13:16:19

+0

好吧,你能更新你的問題與表格的副本? – 2013-04-08 13:24:25

+0

感謝Jaap,只是更新了它 – Holly 2013-04-08 13:29:49