Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails——导航属性:o?_Ruby On Rails_Querying - Fatal编程技术网

Ruby on rails RubyonRails——导航属性:o?

Ruby on rails RubyonRails——导航属性:o?,ruby-on-rails,querying,Ruby On Rails,Querying,我是Rails新手,我有两种型号(票证、用户)。 一张票有一个用户-一个用户有多张票 我想在概览页面上显示“票证用户名” 我已经设置好了我的模型和助手。下面的代码应该显示一个带有中间用户名的3列表,但是我得到一个错误:( “用于…的未定义的方法“用户” 我来自C#使用实体框架..我认为RoR确实理解“article.user.firstname”这个表达 //好的 //错误:( //好的 有人能告诉我怎么存档吗 User.rb class User < ActiveRecord::Ba

我是Rails新手,我有两种型号(票证、用户)。 一张票有一个用户-一个用户有多张票

我想在概览页面上显示“票证用户名”

我已经设置好了我的模型和助手。下面的代码应该显示一个带有中间用户名的3列表,但是我得到一个错误:(

“用于…的未定义的方法“用户”

我来自C#使用实体框架..我认为RoR确实理解“article.user.firstname”这个表达


//好的
//错误:(
//好的
有人能告诉我怎么存档吗

User.rb

class User < ActiveRecord::Base
has_many :tickets, dependent: :destroy
end
class用户
票.rb

class Ticket < ActiveRecord::Base
belongs_to :user
end
classticket
票务控制员.rb

class TicketsController < ApplicationController

def index
    @tickets = Ticket.all.includes(:user)
end

def new 
@users = User.all   

end

def create
    @ticket = Ticket.new(article_params)

    @ticket.save
    redirect_to @ticket
end

def show
    @ticket = Ticket.find(params[:id])
end 

private
def article_params
        params.require(:ticket).permit(:title, :description)
end


end
class ticketcontroller
更新:

我不得不用“rails生成模型票证标题:string消息:string用户id”重新定义我的模型。 之后,我运行了“rakedb:migrate”(在删除该表之后,否则我会得到一个错误)


然后我通过在ticket.rb中写入“属于:用户”和在我的user.rb文件中写入“has\u many:tickets”来设置关联。

你能发布你的用户表、票证表和票证控制器吗。 查看是否有语法错误。 您说票证只有一个用户,您有article.users,而没有article.user 将用户添加到

def article_params
        params.require(:ticket).permit(:title, :description,:user_id)
end
如果您在表单上获取当前用户id,是否可以发布要使用的表单

关于票务表的迁移 你有没有 t、 整数:用户id

我注意到的问题是,当您创建用户正在查找的列表时,该列表位于此表的tickets而不是to Users表中。这就是为什么您在仅使用article.user时不给出错误


在控制台上,尝试User.all并查看您是否获得了User,然后对Ticket.all尝试相同的操作。在注释中,您提到您得到了一个错误,其大意是“nil:NilClass的未定义方法`firstname'”。这意味着您的票证没有指定用户,因此用户为零。您之所以会出现此错误,是因为您试图将零视为用户。

您可以发布用于获取@tickets的查询吗?您还可以发布模型关联。是aritcle.user.firstname吗?它不应该是
article.user.firstname
?我尝试了article.user.firstname…相同错误:(我的查询是:@tickets=Ticket.all.includes(:user)票证:id,标题:string,消息:string,user:int,created_at,updated_at。用户:id:int,account_name:string,firstname:string,lastname:string,created_at,updated_atsame错误:nil:nilclass的未定义方法'firstname',如果使用此方法,您会得到什么类型的错误?但是在“票证”表中的“user”列中,这是用户的id(1)…(…我不明白,为什么Ruby说user=nil
def article_params
        params.require(:ticket).permit(:title, :description,:user_id)
end