首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >评论我的reddit克隆人ruby拉一个NameError

评论我的reddit克隆人ruby拉一个NameError
EN

Stack Overflow用户
提问于 2014-12-13 14:30:15
回答 2查看 70关注 0票数 0

我正在尝试添加Reddit克隆的评论功能。这是注释控制器,它创建注释并将其添加到post中。

代码语言:javascript
运行
复制
class CommentsController < ApplicationController
    def new
        @topic = Topic.find(params[:topic_id])
        @post = Post.find(params[:id])
        @comment = Comment.new
        #authorize @comment       # from include Pundit in the application controller, authorize is an inherited method
   end

    def create
         @topic = Topic.find(params[:topic_id])
        @post = Post.find(params[:id])
        @comment = current_user.comments.build(comment_params)
    end

 private

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

我试图为每个贴子页面添加一个注释字段,方法是使用一个类似于以下内容的表单分部:

代码语言:javascript
运行
复制
<%= form_for [topic, post] do |f| %>

<%= form_group_tag(comment[:text]) do %>
    <%= f.label :text %>
    <%= f.text_area :text, rows: 10, class: 'form-control', placeholder: "Enter your comment" %>
    <% end %>

<div class = "form-group">
    <%= f.submit "Save", class: 'btn btn-success' %>
</div>

<% end %>

这个表单分部应该出现在post.show.html.erb中,所以我把它放在那里

代码语言:javascript
运行
复制
  <h1><%= markdown @post.title %></h1>

<div class="row"> <!-- what others are there besides row? -->
    <div class="col-md-8">
        <p><%= markdown @post.body %></p>
    </div>
   <div class="col-md-4">
    <% if policy(@post).edit? %>
        <%= link_to "Edit", edit_topic_post_path(@topic, @post), class: 'btn btn-success' %>
    <% end %>
   </div>
   <div class="col-md-8">
        <%= render partial: 'comments/form', locals: { topic: @topic, post: @post, text: @post.comments.new } %>
    </div>
</div>

但我在form_group_tag上的“评论”得到了一个form_group_tag。我在这里定义的大部分内容来自于我添加新帖子的代码,这似乎是可行的。这里缺少什么东西吗?

我通过向form_for行添加注释来修正我的名字错误,但是我得到了主题、帖子、评论路径的NoMethodError,所以我认为添加rake路由会有帮助。

代码语言:javascript
运行
复制
    new_user_session GET    /users/sign_in(.:format)                   devise/sessions#new
        user_session POST   /users/sign_in(.:format)                   devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)                  devise/sessions#destroy
       user_password POST   /users/password(.:format)                  devise/passwords#create
   new_user_password GET    /users/password/new(.:format)              devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format)             devise/passwords#edit
                     PATCH  /users/password(.:format)                  devise/passwords#update
                     PUT    /users/password(.:format)                  devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)                    devise/registrations#cancel
       user_registration POST   /users(.:format)                           devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)                   devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)                      devise/registrations#edit
                     PATCH  /users(.:format)                           devise/registrations#update
                     PUT    /users(.:format)                           devise/registrations#update
                     DELETE /users(.:format)                           devise/registrations#destroy
   user_confirmation POST   /users/confirmation(.:format)              devise/confirmations#create
   new_user_confirmation GET    /users/confirmation/new(.:format)          devise/confirmations#new
                     GET    /users/confirmation(.:format)              devise/confirmations#show
                user PATCH  /users/:id(.:format)                       users#update
                     PUT    /users/:id(.:format)                       users#update
         topic_posts POST   /topics/:topic_id/posts(.:format)          posts#create
      new_topic_post GET    /topics/:topic_id/posts/new(.:format)      posts#new
     edit_topic_post GET    /topics/:topic_id/posts/:id/edit(.:format) posts#edit
          topic_post GET    /topics/:topic_id/posts/:id(.:format)      posts#show
                     PATCH  /topics/:topic_id/posts/:id(.:format)      posts#update
                     PUT    /topics/:topic_id/posts/:id(.:format)      posts#update
                     DELETE /topics/:topic_id/posts/:id(.:format)      posts#destroy
              topics GET    /topics(.:format)                          topics#index
                     POST   /topics(.:format)                          topics#create
           new_topic GET    /topics/new(.:format)                      topics#new
          edit_topic GET    /topics/:id/edit(.:format)                 topics#edit
               topic GET    /topics/:id(.:format)                      topics#show
                     PATCH  /topics/:id(.:format)                      topics#update
                     PUT    /topics/:id(.:format)                      topics#update
                     DELETE /topics/:id(.:format)                      topics#destroy
       post_comments POST   /posts/:post_id/comments(.:format)         comments#create
               posts GET    /posts(.:format)                           posts#index
                     POST   /posts(.:format)                           posts#create
            new_post GET    /posts/new(.:format)                       posts#new
           edit_post GET    /posts/:id/edit(.:format)                  posts#edit
                post GET    /posts/:id(.:format)                       posts#show
                     PATCH  /posts/:id(.:format)                       posts#update
                     PUT    /posts/:id(.:format)                       posts#update
                     DELETE /posts/:id(.:format)                       posts#destroy
               about GET    /about(.:format)                           welcome#about
                root GET    /                                          welcome#index

顺便说一句:这个routes.rb文件看上去怎么样?

代码语言:javascript
运行
复制
 Rails.application.routes.draw do
     devise_for :users
  resources :users, only: [:update]
     resources :topics do
        resources :posts, except: [:index]
     end
  resources :posts do
     resources :comments, only: [:create]
  end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-13 14:46:53

尝试:

代码语言:javascript
运行
复制
<%= render partial: 'comments/form', locals: { topic: @topic, post: @post, comment: @post.comments.new } %>
...

<%= form_for [post, comment] do |f| %>
  <%= f.label :text %>
  <%= f.text_area :text, rows: 10, class: 'form-control', placeholder: "Enter your comment" %>

  <%= f.submit "Save", class: 'btn btn-success' %>

<% end %>
...

如果没有帮助,请尝试临时注释form_group_tag并在这里发送错误

票数 1
EN

Stack Overflow用户

发布于 2014-12-13 14:33:40

似乎您正在将comment发送到text的部分。

代码语言:javascript
运行
复制
... locals: { topic: @topic, post: @post, text: @post.comments.new } %>
                                          ^^^^

顺便说一句,您没有在create操作中保存注释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27459876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档