2

我正在使用“acts_as_commentable”gem,但如果我尝试为“状态”创建新评论,我会收到此错误。

在此处输入图像描述

控制器

在此处输入图像描述

更新:

如果我使用它,我不会收到任何错误,但不会将评论保存到数据库中

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

看法

在此处输入图像描述

<% 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

宝石文件

  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'
4

1 回答 1

4

解决了

使用 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 %>
于 2013-09-02T21:51:18.230 回答