【问题标题】:Ruby on Rails: undefined method `any?' for nil:NilClassRuby on Rails: nil:NilClass 的未定义方法`any?\'
【发布时间】:2022-11-21 01:10:03
【问题描述】:

我有一个照片共享 Web 应用程序,我正在尝试在照片中添加 cmets。我找不到任何错误。也许在索引函数的控制器类中是问题所在。当我尝试在照片下方显示发布 cmets 时出现未定义方法错误。 HAML 代码错误。

错误:-如果@photo_cmets.any?

控制器:

class CommentsController < ApplicationController

  def index
    @photo_comments = Comment.where(photo_id: => photo_id)
  end

  def create
    @comment = Comment.create(user_id: params[:user_id], photo_id: params[:photo_id], text: params[:comment][:text])
    flash[:notice] = "Successfully added a comment"
    redirect_to :back
  end

  private
    def comment_params
      params.require(:comment).permit(:user_id, :photo_id, :text)
    end

end

模型:

class Comment < ActiveRecord::Base
    belongs_to :user
    belongs_to :photo
end

数据库:

class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
      t.integer :user_id
      t.integer :photo_id
      t.string :text
      t.timestamps
    end
  end
end

看法:

%p Comments
- if @photo_comments.any?
  - @photo_comments.each do |comment|
    .bold-text= "#{comment.user.email}: "
    .normal-text= comment.text
    %br
- else
  .text No comments for this photo yet! 
%br
%br
%p
  = form_for Comment.new(), :url => user_photo_comments_path do |form|
    = form.label :text, 'Add a Comment'
    %br
    = form.text_area :text
    %br
    = form.submit 'Post'

路线:

Rails.application.routes.draw do
  get '/' => 'home#index'
  resources :users do
    resources :photos do
      resources :comments
    end
    resources :follows
  end

  resources :tags, only: [:create, :destroy]
  get '/log-in' => "sessions#new"
  post '/log-in' => "sessions#create"
  get '/log-out' => "sessions#destroy", as: :log_out

end

【问题讨论】:

  • 当您收到该错误时,您调用什么 URL?

标签: ruby-on-rails ruby haml


【解决方案1】:

这两行没有意义:

- if @photo_comments.nil?
  - @photo_comments.each do |comment|

如果实例变量 @photo_commentsnil 那么迭代它?当然,在这种情况下你会得到一个undefined method 'each' for nil:NilClass

我猜你的意思是这样的:

- unless @photo_comments.nil?
  - @photo_comments.each do |comment|

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2012-09-24
    相关资源
    最近更新 更多