通过状态ID获取状态名称 - Rails 4
问题描述:
我有2个类,ProductDetails
和ProductStatus
。通过状态ID获取状态名称 - Rails 4
class ProductDetail < ActiveRecord::Base
belongs_to :product_status
end
和
class ProductStatus < ActiveRecord::Base
has_many :product_details
end
架构为这些表如下:
create_table "product_details", force: :cascade do |t|
t.integer "product_id", limit: 4
t.string "serial", limit: 255
t.string "comment", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "status", limit: 4
end
create_table "product_statuses", force: :cascade do |t|
t.boolean "available"
t.string "name", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
显示的ProductDetails
,我有status_id
,但我想显示的名称。它在product_statuses
为name
。
我尝试这样做:
<% @product_details.each do |product_detail| %>
<td><%= product_detail.product_status.name %></td>
<% end %>
,但它不工作:(
需要帮助
感谢
答
从您的意见,我意识到你想!使用列status
作为外键。这必须在belongs_to语句中提及:
belongs_to :product_status, foreign_key: :status
默认情况下,rails正在寻找名为product_status_id
的列作为外键。
另请参见http://guides.rubyonrails.org/association_basics.html#options-for-belongs-to-foreign-key
+0
Lol,就是这样。TYVM! –
您得到的错误究竟是什么? – panmari
未定义的方法名称为零:NilClass :( –
这意味着product_detail的product_id是零或不存在于产品表中。仔细检查您的数据库条目 – panmari