我试图附加user_id(以便我可以访问用户详细信息)到已经附加到名为Park的页面的评论。使用另一个表中的ID创建一个新的表格条目
我有三个表建立起来:公园,评论和用户:
class Park < ActiveRecord::Base
has_many :comments
has_many :users
end
class Comment < ActiveRecord::Base
belongs_to :park
has_one :user
end
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :comments
validates_presence_of :username
validates :username, uniqueness: true
def admin?
admin
end
end
正如你可以在上面看到,我使用了宝石设计为用户和授权。
评论显示在公园,所以他们是嵌套:
park_comment GET /parks/:park_id/comments/:id(.:format) comments#show
我的评论控制器设置这样的:
class CommentsController < ApplicationController
before_action :authenticate_user!, only: [:create]
before_action :authorize_admin!, only: [:delete]
def create
@park = Park.find(params[:park_id])
@comment = @park.comments.create(comment_params)
redirect_to park_path(@park)
end
def destroy
@park = Park.find(params[:park_id])
@comment = @park.comments.find(params[:id])
@comment.destroy
redirect_to park_path(@park)
end
private
def comment_params
params.require(:comment).permit(:comment, :user_id, :park_id)
end
end
我已经能够从park_id振荡至user_id说明,但换句话说,这个交易一直在接受大量的零头。
我只是试图隐藏字段添加到我的评论形式
<%= form_for([@park, @park.comments.build]) do |f| %>
<p>
<%= f.label :comment %><br>
<%= f.text_area :comment %>
<%= hidden_field_tag(:user_id, current_user.id) %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
但是,这似乎并没有产生任何结果。
我曾尝试过一些ActiveRecord加入工作,但它不想锁定到我的创建,所以我给了它。现在花了一段时间,我相信有一个简单的解决方案,我只是没有看到。想法?
这很好,谢谢! – mendokusai 2014-12-27 22:45:46
如果这是值得的,那么投我的答案/将其标记为选中。 – Humza 2014-12-27 22:47:00
完成,谢谢@Humza – mendokusai 2014-12-29 06:40:27