需要帮助将数据从一个模型链接到另一个模型
我正在寻找一个清道夫狩猎应用程序,我被卡住了。所以我设立了狩猎和与狩猎相关的任务的CRUD。但我不知道如何设置它,以便用户可以将特定的任务与特定的搜索关联起来。我认为我已经正确地设置了模型,但我不确定如何设置允许这种任务与狩猎关联的视图。需要帮助将数据从一个模型链接到另一个模型
class Hunt < ActiveRecord::Base
has_many :tasks
attr_accessible :name
validates :name, :presence => true,
:length => { :maximum => 50 } ,
:uniqueness => { :case_sensitive => false }
end
class Task < ActiveRecord::Base
belongs_to :hunts
attr_accessible :name
validates :name, :presence => true,
:length => { :maximum => 50 } ,
:uniqueness => { :case_sensitive => false }
end
我猜我需要写一个视图,显示一个狩猎,然后列出所有可用的任务。然后我需要一种方法让用户“挑选”一项任务并将其添加到搜索中。这是最后一部分,让我难住。
一些有价值的信息来源是:
Ruby on Rails Guides: ActionView Helpers - 提供了一个很好的出发点和概述
Blog on dealing with Categories - 讨论使用从关联表导出范畴,并在视图呈现他们
Rails Casts Nested Model - 这显示了如何处理嵌套或has_many关系。
现在就加入任务,并加入了追捕,与使用嵌套属性,你可以有一个显示任务,允许添加的狩猎景观的形式问题。添加操作可能需要一些Javascript(如RailsCasts中所演示的),或者在弹出窗口中执行一个hunt.tasks.build。关联上的构建将为创建的任务分配当前狩猎ID。
现在,如果您有一个预先分配给寻找的任务列表,您需要使表单显示属于寻线任务的选择列表。使用模型中定义的嵌套属性为:
class Hunt < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks
end
class Task < ActiveRecord::Base
belongs_to :hunts
end
所以,现在的形式提交PARAMS将与嵌套,允许你做的的update_attributes相关任务ID发布。
更多详细信息在Rails API accepts nested attributes和RailsCast参考将提供一步一步的示例。
您的belongs_to
声明在Task
类应为:hunt
而不是:hunts
。
就目前看来,这很简单。只需使用f.select
(假设您的表单助手变量名称为f
):hunt_id
,并更新Task
中的hunt_id
属性。
这将关联Hunt
和Task
。
一定要检查出options_for_select
,因此您可以在窗体中显示Hunt
名称和hunt_id
选项值。我也推荐阅读关于关联的Rails指南:http://guides.rubyonrails.org/association_basics.html
我猜我需要写一个视图,显示一个狩猎,然后列出所有可用的任务。然后我需要一种方法让用户“挑选”一项任务并将其添加到搜索中。这是最后一部分,让我难住。
以上意味着有Hunt
和Task
而不是has_many
之间的has_and_belongs_to_many
(*..*
)的关系(因为寻线可以与多个任务相关联,并一个任务可以属于你的系统中的多个狩猎)。
你可以去:
class Hunt < ActiveRecord::Base
[...]
has_and_belongs_to_many :tasks
[...]
end # Hunt
class Task < ActiveRecord::Base
[...]
has_and_belongs_to_many :hunts
[...]
end
否则应使您可以将多个任务相关联(或者,如果你愿意,你可以只是一个关联),并且还具有一个任务属于一个以上的狩猎。此外,您可以使用简单的f.select
表单标签助手来呈现系统中可用任务的列表。
希望这会有所帮助。
感谢您的所有资源! – 2012-03-29 13:04:19