나는 Gumtree.com과 같은 웹 사이트에서 작업하고 있습니다. 사용자가 게시물을 작성하고 다양한 요구 사항을 강조 표시합니다 (예 : X 사진사가 필요함).레일즈 3 프로젝트에서 ID - 양식 오류가없는 사용자를 찾을 수 없습니다.
메시징 기능에 약간의 문제가 있습니다. Simple Private Messaging 플러그인을 사용하고 있습니다.
문제는 사용자가 메시지를 보내거나 게시물에 응답하는 형식으로되어 있습니다. 내가 액세스/메시지하려고 할 때/새로운 다음과 같은 오류가 발생합니다 : 아래 내 모델을 부착
ActiveRecord::RecordNotFound in MessagesController#new
Couldn't find User without an ID
- 어떤 조언에 감사!
감사합니다,
파이
메시지 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
메시지의 모델
class Message < ActiveRecord::Base
is_private_message
attr_accessor :to
end
사용자 모델
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
MESSAGE> NEW VIEW
<% 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 %>
문제를 어떻게 수정했는지 기억하십니까? 동일한 플러그인을 사용하고 있으며 동일한 문제가 있습니다. 나는 @user를 User.first, User.find (1) 등등으로 설정하려고 시도했지만, 지금까지는 행운이 없다. – afaf12