[英]unknown attribute ruby on rails 4
因此,我一直在尝试为用户添加评论部分,以便在婚礼场地上添加他们的评论。 我一直在网上关注有关如何执行此操作的教程,但是,我一直坚持这一观点。
错误:
Showing C:/Sites/Innovative_WeddingsLatest/app/views/comments/_form.html.erb where line #1 raised:
unknown attribute 'venue_id' for Comment.
Trace of template inclusion: app/views/venues/show.html.erb
Rails.root: C:/Sites/Innovative_WeddingsLatest
Application Trace | Framework Trace | Full Trace
app/views/comments/_form.html.erb:1:in `_app_views_comments__form_html_erb___721803434_50744988'
app/views/venues/show.html.erb:32:in `_app_views_venues_show_html_erb___40167619_56734404'
这是我的代码:
class CommentsController < ApplicationController
def create
@venue = Venue.find(params[:venues_id])
@comment = @venue.comments.create(params[:comment].permit(:name, :body))
redirect_to venue_path(@venue)
end
评论模型:
class Comment < ActiveRecord::Base
belongs_to :venues
end
场地型号:
class Venue < ActiveRecord::Base
#check if user has left venue field blank, if so show error "cannot be blank"
validates :venue, :presence => {:message => "cannot be blank ..."}
#validates :name, presence: true, uniqueness: true
has_many :bookings
has_many :comments
end
Views / comments / _form.html.erb
<%= form_for([@venue, @venue.comments.build]) do |f| %>
<p>
<%= f.label :name %>
</p>
<p>
<%= f.label :body %><br>
<%= f.text_area :body %>
</p>
<br>
<p>s
<%= f.submit %>
</p>
<% end %>
观看次数/地点/show.html.erb
<p id="notice"><%= notice %></p>
<!-- when user clicks on "show" information of the specific venue is displayed on a single page -->
</br>
</br>
</br>
</br>
<p>
<strong>Venue:</strong>
<%= @venue.venue %>
</p>
<p>
<strong>Description:</strong>
<%= @venue.description %>
</p>
<p>
<strong>Price:</strong>
<%= number_to_currency @venue.price, unit: "£" %>
</p>
<p>
<%# if not @venue.img_url.blank? %>
<strong>Img url:</strong>
<%#= image_tag @venue.img_url, :size => "180x250" %>
<%# else %>
<%#= image_tag "no-image.jpg", :size => "180x250" %>
<%# end %>
</p>
<%= render 'comments/form' %>
<%= link_to 'Edit', edit_venue_path(@venue) %> |
<%= link_to 'Back', venues_path %>
评论迁移:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :name
t.text :body
t.references :venues
t.timestamps null: false
end
end
end
PS对不起,它是第一次使用这个论坛,所以看起来可能不是最好的:(
如果需要更多代码来解决问题,请告诉我:D
提前致谢 :)
您的迁移说t.references :venues
。 t.references(model)
在此处将在表t
上创建一个名为“#{model} _id”的外键。 这意味着您的外键是“ venues_id”,但是您想要的是“ venue_id”。 只需将t.references :venue
单一化t.references :venues
。
这解释了为什么错误显示为“注释的未知属性'venue_id'”。 由于您使用的是“ venues_id”而不是“ venue_id”,所以场地名称id 不存在 。
确保在重新运行rake db:migrate
之前回滚迁移( rake db:rollback
)。
请在注释模型中将您的关联更正为belongs_to :venue
同时将每次迁移的迁移更改为t.references :venue
,注释模型中的迁移生成的字段将为“ venue_id”,并且您准备好了!
您的迁移说t.references :venues
。 t.references(model)
将在表t上创建一个名为#{model}_id
的外键。 这意味着您的外键是venues_id
,但是您想要的是venue_id
。 只需将t.references :venue
单一化t.references :venues
。
这就解释了为什么错误unknown attribute 'venue_id' for Comment.
由于您使用的是venues_id
而不是venue_id
,所以venue_id
属性不存在。
确保在重新运行rake db:migrate
之前回滚迁移( rake db:rollback
)。
要么
你可以简单地改变你的迁移表t.references
从venues
到venue
,并在终端运行此命令rake db:migrate:redo
。 这会将您的架构表更改为您在迁移文件中所做的最新更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.