gpt4 book ai didi

ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章?

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:08 24 4
gpt4 key购买 nike

我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google 就是没有帮助我。 (我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过 O'Reilly 的 Ruby Cookbook 和 Rails API,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。

我正在尝试调整 Michael Hartl's tutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。

我的主要问题是:我不知道如何将当前文章的 ID 放入评论 Controller 。

User 类的关系:

class User < ActiveRecord::Base

has_many :articles
has_many :comments, :dependent => :destroy

文章类的关系:

class Article < ActiveRecord::Base

belongs_to :user
has_many :comments, :dependent => :destroy

评论类的关系:

class Comment < ActiveRecord::Base

belongs_to :user
belongs_to :article

这是我的 CommentsController(关于页面在 else 中呈现只是暂时让我明白):

class CommentsController < ApplicationController
before_filter :authenticate, :only => [:create, :destroy]

def new
@comment = Comment.new
end

def create
@article = Article.find(params[:id])
@comment = current_user.comments.build(params[:comment])
@comment.article_id = @article.id
if @comment.save
flash[:success] = "Comment created!"
redirect_to '/contact'
else
render '/about'
end
end

def destroy
end
end

当我以用户身份登录并尝试对文章发表评论时,我收到“没有 ID 找不到文章”。我不知道如何将当前文章的 ID 放入评论 Controller 中。

谢谢,如果您需要我发布更多代码,请告诉我。

编辑:这是我在文章的 show.html.erb View 底部调用的 _comment_form.html.erb 部分:

<%= form_for ([@article, @article.comments.build]) do |f| %>
<div class="field">
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>

这里还有文章的 show.html.erb:

<heading>
<h1><%= @article.heading %></h1>
<p>Posted <%= time_ago_in_words(@article.created_at) %> ago by <%= @article.user.name %></p>
</heading>
<p><%= @article.content %></p>
<footer><p>
<% unless @article.comments.empty? %>
<%= @article.comments.count %>
<% end %> comments</p></footer>
<% unless @article.comments.empty? %>
<%= render @comments %>
<%= will_paginate @comments %>
<% end %>
<%= render 'shared/comment_form' %>

最佳答案

我同意你的看法,多态不是你想要的。我认为您目前的联想看起来不错。

我假设在您的 routes.rb 中您有类似这样的设置。如果我错了请纠正我:

resources :articles do
resources :comments
end

但如果是这种情况,您应该将 CommentsController 中的创建操作更改为使用 params[:article_id] 而不是 params[:id]

@article = Article.find(params[:article_id])

这应该可以解决找不到没有 ID 的文章的问题

关于ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5467692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com