2016-07-23 49 views
0

我有一個非常基本的照片和評論模型的作品,然後我有一個Cflags模型,用於標記評論。當我訪問的照片/ show.html.erb視圖從Heroku的以下錯誤日誌ActionView :: Template :: Error(未初始化的常量ActionView :: CompiledTemplates :: Cflags

ActionView::Template::Error (uninitialized constant ActionView::CompiledTemplates::Cflags 

photos/show.html.erb 
. 
. 
<% @photo.comments.each do |comment| %> 
    <%= form_for([comment, Cflags.new]) do |f| %> 
    <%= f.hidden_field :user_id, value: current_user.id %> 
    <%= f.submit "Report Inappropiate" %> 
    <% end %> 
<% end %> 

resources :photos do 
    resources :comments do 
    resources :cflags 
    end 
end 

PhotosController 
def show 
    @photo = Photo.approved.find(params[:id]) 
end 

CommentsController 
def create 
    @photo = Photo.find(params[:photo_id]) 
    @comment = @photo.comments.build(comment_params) 
    @comment.save 
    respond_to do |format| 
    format.html { redirect_to :back } 
    format.js 
    end 
end 

class Cflag < ActiveRecord::Base 
    belongs_to :comment, counter_cache: true 
    belongs_to :user, counter_cache: true 
    validates :user_id, presence: true 
    validates :comment_id, presence: true 
    validates :user_id, uniqueness: { 
    scope: [:comment_id], 
    message: 'You can only flag a comment once. Thank you for your feedback.' 
    } 
    default_scope -> { order(created_at: :desc) } 
end 

class CflagsController < ApplicationController 
before_action :logged_in_user 

def new 
end 

def create 
    @comment = Comment.find(params[:comment_id]) 
    @cflag = @comment.cflags.build(cflag_params) 
    if @cflag.save 
     if @comment.cflags_count > 1 
     @comment.update_attribute(:approved, false) 
     flash[:success] = "Flag created! Comment ##{@comment.id} has been removed for review. Thank you for your feedback" 
     redirect_to :back 
     else  
     flash[:success] = "Flag created! Thank you for your feedback" 
     redirect_to :back 
     end 
    else 
     redirect_to :back, notice: @cflag.errors.full_messages 
    end  
    end  

    private 
    def cflag_params 
     params.require(:cflag).permit(:user_id, :comment_id).merge(user_id: current_user.id) 
    end 
end 

create_table "cflags", force: :cascade do |t| 
    t.integer "comment_id" 
    t.integer "user_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
end 

add_index "cflags", ["comment_id"], name: "index_cflags_on_comment_id" 
add_index "cflags", ["user_id"], name: "index_cflags_on_user_id" 

回答

0

你有一個錯字您模型稱爲CflagCflags更改此:。

photos/show.html.erb 
. 
. 
<% @photo.comments.each do |comment| %> 
    <%= form_for([comment, Cflags.new]) do |f| %> 
    <%= f.hidden_field :user_id, value: current_user.id %> 
    <%= f.submit "Report Inappropiate" %> 
    <% end %> 
<% end %> 

到這個

photos/show.html.erb 
. 
. 
<% @photo.comments.each do |comment| %> 
    <%= form_for([comment, Cflag.new]) do |f| %> 
    <%= f.hidden_field :user_id, value: current_user.id %> 
    <%= f.submit "Report Inappropiate" %> 
    <% end %> 
<% end %> 
相關問題