Ruby on rails 未定义的方法`user';在岗位上>;显示视图
当我尝试加载表单时,在posts>show中获取此错误 该表单供用户相互发送消息。感谢您的反馈 谢谢Ruby on rails 未定义的方法`user';在岗位上>;显示视图,ruby-on-rails,ruby-on-rails-3,forms,Ruby On Rails,Ruby On Rails 3,Forms,当我尝试加载表单时,在posts>show中获取此错误 该表单供用户相互发送消息。感谢您的反馈 谢谢 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
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 />
主控制器
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
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
class Posttrue
验证:salary,:numerical=>{:大于或等于1}
默认范围:order=>'posts.created_at DESC'
结束
错误是在Post
模型上没有方法user
。它直接指向第一行
<%= form_remote_tag (:update => 'message', :url => {:controller => 'main', :action => 'send_message', :user_id => @post.user.id}) do %>
'message',:url=>{:controller=>'main',:action=>'send_message',:user_id=>@post.user.id})do%>
我得说
@post.user.id
是您的问题陈述,该模型没有方法user
,但如果不查看post模型,就很难确定 我想你错过了添加关系
class Post < ActiveRecord::Base
belongs_to :user
end
class Post
我在上面添加了post模型。那么,我可以用belowns\u to:user来解决这个问题吗?或者还有其他问题吗?@hikmatyar是的,应该可以解决这个问题,不要忘记将has\u many:posts
添加到用户模型中。
<%= form_remote_tag (:update => 'message', :url => {:controller => 'main', :action => 'send_message', :user_id => @post.user.id}) do %>
class Post < ActiveRecord::Base
belongs_to :user
end