Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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 创建可在Rails的多个控制器中定义和访问的变量_Ruby On Rails_Ruby_Ruby On Rails 3_Model View Controller_Static Variables - Fatal编程技术网

Ruby on rails 创建可在Rails的多个控制器中定义和访问的变量

Ruby on rails 创建可在Rails的多个控制器中定义和访问的变量,ruby-on-rails,ruby,ruby-on-rails-3,model-view-controller,static-variables,Ruby On Rails,Ruby,Ruby On Rails 3,Model View Controller,Static Variables,我正在创建一个用于创建多个待办事项列表的应用程序。因此,用户登录时有多个列表,每个列表包含多个项目。其他一切都正常,但我正在努力创建项目 我在列表中创建新项目的代码(可在项目\u控制器中找到)是: 问题是,我不确定如何定义@list应该是什么。我有一个变量current\u user(基于会话)用于创建新列表,但每个会话只有一个用户,每个会话有多个列表,因此我不能只复制该方法 基本上,我被困在如何让项目知道它属于哪个列表(哪个应该是我刚刚在其显示页面上的列表)上。在Java中,我会有一个静态变量

我正在创建一个用于创建多个待办事项列表的应用程序。因此,用户登录时有多个列表,每个列表包含多个项目。其他一切都正常,但我正在努力创建项目

我在列表中创建新项目的代码(可在
项目\u控制器中找到)是:

问题是,我不确定如何定义
@list
应该是什么。我有一个变量
current\u user
(基于会话)用于创建新列表,但每个会话只有一个用户,每个会话有多个列表,因此我不能只复制该方法


基本上,我被困在如何让项目知道它属于哪个列表(哪个应该是我刚刚在其显示页面上的列表)上。在Java中,我会有一个静态变量,每次去列表时我都会重新定义它,但我试着这样做,但它不起作用,我在rails中看到的显然是不起作用的

列表项应具有列表模型的外键,列表模型应具有帐户的外键。通过这种方式,您应该能够轻松地遍历结构

class ListItem  < ActiveRecord::Base
  belongs_to :list
end

class List <  < ActiveRecord::Base
  belongs_to :account
  has_many :list_items
end

class Account <  < ActiveRecord::Base
  has_many :lists
end
class ListItem
您应该使用url参数跟踪列表,而不是存储变量。您需要修改表单以包含
list\u id
参数。然后,在控制器中创建列表项时,执行以下操作:

@list = List.find params[:list_id]
@new_item = @list.items.build params[:item]
或者,如果您让您的参数包含一个
items[list\u id]
参数,那么在Rails中,它将可以在
params[:item][:list\u id]
中访问,因此您应该能够执行以下操作:

@new_item = ListItem.create params[:item]

如果你这样做的话,只需确保在ListItem模型中添加验证,以确保
list\u id
存在并且它指向的列表存在。

将用户列表保存到数据库中-即使在使用静态变量的java web应用程序中也不是一个好主意列表在数据库中-问题是,即使每个列表都有自己的id,项目不知道它属于哪一个特定列表怎么可能?列表中不是有很多项吗:通过某个东西,或habtm?有,但该项尚未创建,因此它不属于任何东西…这正是我的数据库的设置方式。但是,为了创建列表项,我需要指定它应该属于哪个列表——我不确定如何使用外键指定(@list):list\u id,因为它还不属于列表。这是个好主意——我应该使用url参数跟踪它。但实际上,我认为,当我从主主页链接到列表显示页面时,然后在列表页面上,可以从参数访问列表id。
@new_item = ListItem.create params[:item]