2013-08-11 3 views
2

Я использую «act_as_commentable» gem, но если я попытаюсь создать новый комментарий к «статусу», я получаю эту ошибку.Acts_as_commentable: AssociationTypeMismatch

enter image description here

Контроллер

enter image description here

Update:

Если я использую это, я не получаю никаких ошибок, но это не спасает комментарий в база данных

private 
    def status_params 
     params.require(:status).permit(:user, :message, :comments) 
    end 

Посмотреть

enter image description here

<% if user_signed_in? %> 
<%=form_for([resource.user, resource]) do |f| %> 
    <%=f.fields_for :comments do |fc| %> 

     <div class="row"> 
      <div class="large-1 columns"> 
       <%=image_tag current_user.photo %> 
      </div> 

      <div class="large-11 columns text-left"> 

       <%=fc.text_area :comment, placeholder: "Write a comment..."%> 
       <div class="text-right"> 
        <%=fc.submit "Send", :class=>"pure-button pure-button-xsmall pure-button-primary" %> 
       </div> 

      </div> 
     </div> 
    <% end %> 
<% end %> 

Модель (Статус)

class Status < ActiveRecord::Base 

    belongs_to :user 

    acts_as_commentable 
    acts_as_likeable 

     validates :message, :presence => true 
    end 

Модель (Пользователь) Класс пользователя < ActiveRecord :: Base

devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable  

    has_many :statuses 
    has_many :photos 
    has_many :videos 
    has_one :player_profile 

    mount_uploader :photo, ProfilePhotoUploader 

    accepts_nested_attributes_for :player_profile 


    acts_as_liker 

end 

Gemfile

source 'https://rubygems.org' 
ruby '2.0.0' 

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '4.0.0' 
gem 'pg' 


gem 'sass-rails', git: 'https://github.com/rails/sass-rails.git' 

# Use Uglifier as compressor for JavaScript assets 
gem 'uglifier', '>= 1.3.0' 

# Use CoffeeScript for .js.coffee assets and views 
gem 'coffee-rails', git: 'git://github.com/rails/coffee-rails.git' 

# See https://github.com/sstephenson/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

# Use jquery as the JavaScript library 
gem 'jquery-rails', '~> 3.0.0' 

# assets 

gem "asset_sync" 

gem 'zurb-foundation', :git => "https://github.com/zurb/foundation.git" 
gem "compass" 
gem 'compass-rails', '2.0.alpha.0' 
gem 'bourbon' 
gem "font-awesome-rails" 


gem 'kaminari' 

gem 'jquery-turbolinks', github: "kossnocorp/jquery.turbolinks" 
gem 'turbolinks', github: "rails/turbolinks" 

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 1.0.1' 

group :doc do 
    # bundle exec rake doc:rails generates the API under doc/api. 
    gem 'sdoc', require: false 
end 

#gem 'protected_attributes' 
gem 'devise' #, "~> 3.0.0.rc",  github: 'plataformatec/devise' #, branch: 'rails4' 
gem 'responders',   github: 'plataformatec/responders' 
gem 'inherited_resources', github: 'josevalim/inherited_resources' 
gem 'ransack' 
gem 'activeadmin',   github: 'gregbell/active_admin', branch: 'rails4' 
gem 'formtastic',   github: 'justinfrench/formtastic' 

gem "nested_form" 
gem "simple_form" 
gem "mini_magick" 


gem 'omniauth' 
gem 'omniauth-facebook' 

gem 'carrierwave' 
gem "fog", "~> 1.3.1" 

gem 'public_activity' 
gem 'acts_as_commentable' 
gem "socialization" 

gem 'rails_12factor' 
+0

Использование '<% = f.fields_for: комментарий делаем | FC | %> ', особый символ. – vee

+0

Я пробовал, но получаю: ActiveRecord :: UnknownAttributeError в StatusesController # update (неизвестный атрибут: комментарий) http://cl.ly/image/1A1A1j2t0J1c – sparkle

+0

Пожалуйста, разместите свой код контроллера. – vee

ответ

3

решаемые

решаемые с помощью CommentController вместо того, чтобы использовать комментарии в качестве вложенной модели

CommentController

class CommentsController < ApplicationController 


    def create 
     comment = Comment.new comment_params 
     commentable = params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) 
     comment.commentable = commentable 
     comment.user = current_user 

     comment.save 


     redirect_to [commentable.user, commentable] 

    end 


    private 

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

Просмотров

<%= form_for(Comment.new) do |f| %> 

<div class="row"> 
    <div class="large-1 columns"> 
     <%=image_tag current_user.photo %> 
    </div> 

    <div class="large-11 columns text-left"> 

      <%=f.text_area :comment, placeholder: "Write a comment..."%> 
      <%=f.hidden_field :commentable_type, :value => resource.class.to_s%> 
      <%=f.hidden_field :commentable_id, :value => resource.id%> 

     <div class="text-right"> 

      <%=f.submit "Send", :class=>"pure-button pure-button-xsmall pure-button-primary" %> 
     </div> 

    </div> 
</div> 

<% end %> 
Смежные вопросы