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]