用另一个表的ID创建一个新的表条目

门得赛

我正在尝试将user_id(以便我可以访问用户详细信息)附加到已附加到名为Park的页面的注释中。

我设置了三个表格:Park,Comment和User:

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

如您在上面看到的,我正在使用Devise gem供用户和授权使用。

评论显示在Park上,因此它们是嵌套的:

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的加入工作,但它不想锁定到我的创建中,所以我放弃了。现在花了一段时间,我相信有一个简单的解决方案我只是看不到。有想法吗?

二手烟

hidden_field_tag没有工作。它将创建一个单独的参数,而不是一个嵌套在所需参数下的参数。

我的建议是完全删除hidden_​​field并在控制器中指定current_user。

class CommentsController < ApplicationController

  def create
    @park = Park.find(params[:park_id])
    @comment =  @park.
                comments.
                create(
                  comment_params.
                  merge(user_id: current_user.id) # adding here, on creation
                  # or merge(user: current_user)
                )
    redirect_to park_path(@park)
  end

  def comment_params
    params.
    require(:comment).
    permit(:comment)
  end

end

为什么?因为否则用户可能会更改该hidden_​​field的值,并且您将错误地存储注释的user_id值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

合并来自两个SQL表的数据以在另一个表中创建新条目

来自分类Dev

用另一个表中的信息创建一个表

来自分类Dev

如何从一个SQL表复制数据并在另一个不同的表中创建新条目?

来自分类Dev

Sql从一个表插入id到另一个表中的条目

来自分类Dev

如何使用 SQL 中另一个表中的一列创建一个新表?

来自分类Dev

为另一个表中的每个元素创建一个包含一列的新表

来自分类Dev

从另一个表创建表

来自分类Dev

在x64 Ubuntu 14.04上用另一个覆盖页表条目

来自分类Dev

在另一个表中创建新行时更新表

来自分类Dev

当另一个表获得新记录时,在表中自动创建记录

来自分类Dev

为Android上另一个表中的每个项目创建新表

来自分类Dev

用另一个类创建新对象

来自分类Dev

用另一个表中的值在一个表中进行计算

来自分类Dev

用另一个表的结果更新一个表

来自分类Dev

如何在另一个表中的条目之后找到表中的下一个条目?

来自分类Dev

Google工作表从另一个工作表ID创建pdf

来自分类Dev

从另一个表创建一个表

来自分类Dev

如何使用 JavaScript 在另一个表中创建一个表?

来自分类Dev

使用函数从另一个表创建一个连接表

来自分类Dev

用另一个表的avg()更新?

来自分类Dev

用另一个查询表填充NaN

来自分类Dev

用另一个表替换列

来自分类Dev

检查一个表的ID是否用作另一个表的外键

来自分类Dev

在一个表中计算ID,在另一个表中乘以值

来自分类Dev

如何检查一个表到另一个表的ID?

来自分类Dev

仅将一个表的ID复制到另一个表

来自分类Dev

将ID从一个表发布到另一个表

来自分类Dev

根据另一个表的 id 计算一个表中的行数

来自分类Dev

列出一个表的名称,该表的ID与另一表中的条目匹配

Related 相关文章

  1. 1

    合并来自两个SQL表的数据以在另一个表中创建新条目

  2. 2

    用另一个表中的信息创建一个表

  3. 3

    如何从一个SQL表复制数据并在另一个不同的表中创建新条目?

  4. 4

    Sql从一个表插入id到另一个表中的条目

  5. 5

    如何使用 SQL 中另一个表中的一列创建一个新表?

  6. 6

    为另一个表中的每个元素创建一个包含一列的新表

  7. 7

    从另一个表创建表

  8. 8

    在x64 Ubuntu 14.04上用另一个覆盖页表条目

  9. 9

    在另一个表中创建新行时更新表

  10. 10

    当另一个表获得新记录时,在表中自动创建记录

  11. 11

    为Android上另一个表中的每个项目创建新表

  12. 12

    用另一个类创建新对象

  13. 13

    用另一个表中的值在一个表中进行计算

  14. 14

    用另一个表的结果更新一个表

  15. 15

    如何在另一个表中的条目之后找到表中的下一个条目?

  16. 16

    Google工作表从另一个工作表ID创建pdf

  17. 17

    从另一个表创建一个表

  18. 18

    如何使用 JavaScript 在另一个表中创建一个表?

  19. 19

    使用函数从另一个表创建一个连接表

  20. 20

    用另一个表的avg()更新?

  21. 21

    用另一个查询表填充NaN

  22. 22

    用另一个表替换列

  23. 23

    检查一个表的ID是否用作另一个表的外键

  24. 24

    在一个表中计算ID,在另一个表中乘以值

  25. 25

    如何检查一个表到另一个表的ID?

  26. 26

    仅将一个表的ID复制到另一个表

  27. 27

    将ID从一个表发布到另一个表

  28. 28

    根据另一个表的 id 计算一个表中的行数

  29. 29

    列出一个表的名称,该表的ID与另一表中的条目匹配

热门标签

归档