2016-07-23 50 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 %> 
相关问题