我不明白如何從我的View中訪問其他表中的數據。Rails:在View中訪問其他SQL表的數據
我有幾個型號。首先是用戶,其次是UsersPreferences。所以,我對於用戶設置頁,代碼如下:
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
...
<div class="checkbox">
<%= f.check_box :notification_about_new_followers %>
<%= f.label 'Notify via email about new followers' %><br />
</div>
此代碼(用戶有排notification_about_new_followers),但我想改變它。我決定更好的方法是在其他表格中保留偏好。所以我創建了用戶偏好其中user_id和標誌'notify_about_new_followers'。我試圖重寫我的觀點類似:
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
...
<div class="checkbox">
<%= f.check_box UsersPreferences.find_by_user_id(@user.id).notify_about_new_followers %>
<%= f.label 'Notify via email about new followers' %><br />
</div>
但是當我訪問網頁的代碼,我得到這樣的錯誤
undefined method `true' for #<User:0x007f8ac180dee8>
我怎樣才能解決這個問題?
用戶模型:
class User < ActiveRecord::Base
attr_accessible :name, ... , :notification_about_new_followers
...
has_one :users_preferences
end
UsersPreferences模型:
class UsersPreferences < ActiveRecord::Base
belongs_to :user, :class_name => "User"
attr_accessible :notify_about_new_followers
end
在你遇到一些不良習慣之前,請[很熟悉MVC](http://jordanhall.co.uk/programming/simple-explanation-of-model-view-controller-mvc-2206990/)。 – bricker