2012-04-23 42 views
1

當我嘗試加載表單時在帖子>顯示中顯示此錯誤。未定義的方法'用戶'在帖子>顯示視圖

該表單用於用戶向對方發送消息。感謝任何反饋!

謝謝。

NoMethodError in Posts#show 

Showing /Users/fkhalid2008/loand/app/views/posts/show.html.erb where line #1 raised: 

undefined method `user' for #<Post:0x12e2ae930> 
Extracted source (around line #1): 

1: <%= form_remote_tag (:update => 'message', :url => {:controller => 'main', :action => 'send_message', :user_id => @post.user.id}) do %> 
2: <br> 
3: <br /> 
4: <br /> 

帖子>顯示視圖

<%= form_remote_tag (:update => 'message', :url => {:controller => 'main', :action => 'send_message', :user_id => @post.user.id}) do %> 
<br> 
<br /> 
<br /> 
<div class="field"> 
Hello! My name is <%= f.text_field :subject %> and I'm contacting you in response to your ad. I'm interested in learning more so get in touch! Here's my contact details: <%= f.text_field :body %>. 
</div> 
<button type="submit" class="btn span6 large">Submit</button> 
<% end %> 

Posts控制器

def new 
@post = Post.new 

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render :json => @post } 
end 
end 

def edit 
@post = Post.find(params[:id]) 
end 

def create 
    @post = Post.new(params[:post]) 

    respond_to do |format| 
     if verify_recaptcha && @post.save 
      format.html { redirect_to :action=> "index"} 
      format.json { render :json => @post, :status => :created, :location => @post } 
     else 
      format.html { render :action => "new" } 
      format.json { render :json => @post.errors, :status => :unprocessable_entity } 
     end 
    end 
end 

主控制器

class MainController < ApplicationController 

def send_message 
message = Message.new 
message.subject = params[:subject] 
message.body = params[:message] 
message.sender = User.find session[:user] 
message.recipient = User.find params[:user_id] 
if message.save 
    ContactMailer.deliver_message_email message.recipient.email, message.id, request.host 
    return redirect_to "/posts" 
else 
    render :text => "Hmm. Something seems to be wrong...let me look into it" 
end 

聯繫MAILER

類ContactMailer <的ActionMailer :: Base的

def message_email (recipient, id, host) 
recipients [ recipient ] 
subject  "Weddoo: You have received a new message" 
from   "[email protected]" 
bcc   ["[email protected]"] 
content_type "text/html" 
body   :message_id => id, :host => host 
sent_on Time.now 
end 

end 
end 

的routes.rb

Mysalary::Application.routes.draw do 

resources :users do 
resources :messages 
    end 

resources :profiles 
resources :pages 
resources :posts 

get "pages/home" 
get "pages/about" 
get "pages/legal" 
get "pages/feedback" 

root :to => 'posts#new' 

end 

崗位模型

class Post < ActiveRecord::Base 
attr_accessible :title, :job, :location, :salary 

validates :title, :job, :location, :salary, :presence => true 
validates :salary, :numericality => {:greater_than_or_equal_to => 1} 

default_scope :order => 'posts.created_at DESC' 
end 

回答

2

錯誤是說沒有對Post型號方法user。它直接指向第一行。

<%= form_remote_tag (:update => 'message', :url => {:controller => 'main', :action => 'send_message', :user_id => @post.user.id}) do %> 

,所以我會說

@post.user.id是你的問題的陳述,該模型沒有一個方法user但很難知道肯定沒有看到Post模型。

+0

我在上面添加了帖子模型。所以我可以用belongs_to解決這個問題:用戶,還是有更多? – hikmatyar 2012-04-23 07:18:29

+0

@hikmatyar是的,應該解決這個問題,不要忘了將'has_many:posts'添加到用戶模型。 – TCopple 2012-04-23 16:31:50

1

我想你錯過了加入關係。

class Post < ActiveRecord::Base 
    belongs_to :user 
end 
相關問題