0

私はRails 3プロジェクトのシンプルプライベートメッセージングプラグインに関連しています。フォームがRails 3プロジェクトにロードされていません

私のウェブサイトはGumTree.comのような市場であり、人々がニーズを投稿し、他の人が「連絡先」ボタンをクリックしてフォームに記入して投稿すると応募できます。

私がいる問題は、メッセージングフォームは、私は新しい/メッセージ/に行くとき、私はこのエラーを取得し、ロードされていないということです。

undefined local variable or method `is_private_message' for #<Class:0x12cf23578> 

コードは以下の通りです - 任意のフィードバックに感謝!

おかげで、

ファイサル


ユーザ・モデル

class User < ActiveRecord::Base 

has_many :posts 
has_one :profile 
has_private_messages 

attr_accessible :email 

validates_presence_of :email 
validates_uniqueness_of :email, :message =>"Hmm, that email's already taken" 
validates_format_of :email, :with => /^([^\s]+)((?:[-a-z0-9]\.)[a-z]{2,})$/i, :message => "Hi! Please use a valid email" 

end 

メッセージモデル

class Message < ActiveRecord::Base 

is_private_message 

attr_accessor :to   

end 
そこDOC https://github.com/jongilbraith/simple-private-messagesによれば

routes.rbを(関連部分のみ)

get "messages/new" 

メッセージ>新しいビュー

<% form_for @message, :url => user_messages_path(@user) do |f| %> 
<p> 
To:<br /> 
    <%= f.text_field :to %> 
    <%= error_message_on @message, :to %> 
</p> 
<p> 
Subject:<br /> 
<%= f.text_field :subject %> 
<%= error_message_on @message, :subject %> 
</p> 
<p> 
    Message<br /> 
    <%= f.text_area :body %> 
     <%= error_message_on @message, :body %> 
</p> 
<p> 
    <%= submit_tag "Send" %> 
</p> 
<% end %> 

メッセージCONTROLLER

class MessagesController < ApplicationController 

before_filter :set_user 

def index 
if params[:mailbox] == "sent" 
    @messages = @user.sent_messages 
else 
    @messages = @user.received_messages 
end 
end 

def show 
@message = Message.read_message(params[:id], current_user) 
end 

def new 
@message = Message.new 

if params[:reply_to] 
    @reply_to = @user.received_messages.find(params[:reply_to]) 
    unless @reply_to.nil? 
    @message.to = @reply_to.sender.login 
    @message.subject = "Re: #{@reply_to.subject}" 
    @message.body = "\n\n*Original message*\n\n #{@reply_to.body}" 
    end 
end 
end 

def create 
@message = Message.new(params[:message]) 
@message.sender = @user 
@message.recipient = User.find_by_login(params[:message][:to]) 

if @message.save 
    flash[:notice] = "Message sent" 
    redirect_to user_messages_path(@user) 
else 
    render :action => :new 
end 
end 

def delete_selected 
if request.post? 
    if params[:delete] 
    params[:delete].each { |id| 
     @message = Message.find(:first, :conditions => ["messages.id = ? AND (sender_id = ? OR recipient_id = ?)", id, @user, @user]) 
     @message.mark_deleted(@user) unless @message.nil? 
    } 
    flash[:notice] = "Messages deleted" 
    end 
    redirect_to :back 
end 
end 

private 
def set_user 
    @user = User.find(params[:user_id]) 
end 
end 
+0

テーブルが存在しないため、何をすべきかが分かります。 'rake db:migrate'を実行してDBを移行し、テーブルを追加してください。多分、プラグインがいくつかの移行を生成しました(あなたがMySQLなどを使用している場合) – 23tux

+0

@ 23tux rake db:migrateを試みましたが、何も起こりません。 – hikmatyar

+0

あなたはdbを再作成できますか?ドロップしてから作成して移行することを意味しますか?そして、これが修正されているかどうかはc! –

答えて

0

方法はis_private_messageではありません。ただし、既にUserモデルに入れているhas_private_messagesメソッドがあります。

私はあなたがちょうどあなたがこのコマンドを実行しましたis_private_message

EDIT

を削除する必要があると思いますか? rails generate simple_private_messages:model User Messageなど。 宝石のコード(https://github.com/jongilbraith/simple-private-messages/blob/master/lib/generators/simple_private_messages/model/model_generator.rb)によれば、理論的にはマイグレーションを生成し、 rake db:migrateは空であってはいけません。

+0

このエラーが発生しましたNilClassのための未定義のメソッド 'model_name ':Class ---(これは部分的なフォームの1行目を参照します)<%= form_for(@message)do | f |%> – hikmatyar

+0

上記の更新された問題の説明とコードを参照してください - 私はプラグインを再インストールしましたが、まだ1の永続エラーがあります。 – hikmatyar

+0

messages_controller code please – Pravin

関連する問題