2015-02-24 3 views
0

я пытаюсь пользователь acts_as_votable драгоценного камня, чтобы сделать пользователь проголосовать за звездаacts_as_votable, не определен метод `upvote_by» для ноля: NilClass

это мои звезды-контроллер

class StarsController < ApplicationController 
    before_filter :authenticate_user!, except: [:index, :show] 
    before_action :upvote 
    def index 
     @stars = Star.all.order("created_at DESC") 
    end 

    def upvote 
    # @star = Star.find(params[:id]) 
    @star.upvote_by current_user 
    redirect_to @star 
    end 

    def show 
     @star= Star.find(params[:id]) 
    end 

    def new 
    end 

    def create 
     @star =Star.new(stars_params) 
     @star.save 

     redirect_to @star 
    end 




    private 
    def stars_params 
     params.require(:star).permit(:name , :description , :image) 
    end 

end 

и это моя звезда модель

class Star < ActiveRecord::Base 


has_many :books 

has_attached_file :image, :styles => { :small => "150x150>" } 
validates_attachment_presence :image 
validates_attachment_size :image, :less_than => 5.megabytes 
validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png'] 
acts_as_votable 
end 

и маршруты

Rails.application.routes.draw do 
    resources :books 

    devise_for :users, path_names: {sign_in: "login", sign_out: "logout"} 

    resources :stars do 
    member do 
     put "like" , to: "stars#upvote" 

    end 
    end 


    root 'stars#index' 
end 

я получаю эту ошибку «неопределенный метод` upvote_by»для ноль: NilClass»

благодаря

ответ

2

Ваша проблема на самом деле не связано с acts_as_votable - переменная экземпляра не был назначен еще, так что практически любой метод может вызвать эта ошибка. Вы должны не-комментарий прокомментировал линию и изменения:

before_action :upvote 

к

before_action :upvote, except: :index 

Эта логика, однако, кажется подозрительным - почему вы хотели бы звезда быть upvoted, когда пользователь редактирует его? Короче: проясните свои требования.

+0

спасибо, но когда я редактирую eh before_action, как вы сказали, новая ошибка в звездной модели неопределенная локальная переменная или метод 'act_as_votable 'для # <класс: 0xb52a7500> –

+0

Вы перезапустили сервер после установки этого драгоценного камня? – BroiSatse

+0

Да, я перезапустил сервер –

 Смежные вопросы

  • Нет связанных вопросов^_^