Ruby on rails 创建用于将信息插入不同表的表单时出现问题
我基本上是一个Rails初学者,目前正在Rails2.2中开发一个相当复杂的Web应用程序 所以,在这个webapp中,有“工厂”。记住,不是设计模式,而是实际的工厂(这是一个游戏) 对于球员团队中的每个工厂,他都有很多选择Ruby on rails 创建用于将信息插入不同表的表单时出现问题,ruby-on-rails,forms,Ruby On Rails,Forms,我基本上是一个Rails初学者,目前正在Rails2.2中开发一个相当复杂的Web应用程序 所以,在这个webapp中,有“工厂”。记住,不是设计模式,而是实际的工厂(这是一个游戏) 对于球员团队中的每个工厂,他都有很多选择 机器的维护水平 对工人的奖励 等等 我对此有两个问题: 这些都是复选框,该复选框需要默认为答案已存储在数据库中。我的意思是,如果玩家已经勾选了复选框,那么复选框必须已经在复选框中了(如果这篇文章让人困惑,那么很抱歉) 此信息存储在多个表中。工厂的维护级别保存在一个表中,
- 机器的维护水平
- 对工人的奖励
- 等等
看到您添加了使用rails 2.2,您可以尝试使用或创建嵌套表单(这只是一个建议,因为我不知道它是否有效)。我只能手动设置值来更新模型。要理解问题1,请保持简单,并假设要访问的属性在Factorys表中。因此,设计模式非常简单: 数据库架构:
create_table :factories do |t|
t.boolean :now_operating, :default => true, :null => false
...
控制器:
def edit
@factory = Factory.find(params[:id])
if request.post?
@factory.update_attributes(params[:factory])
end
end
视图:
{:action=>“edit”}do | f |%>
...
您可以用更少的代码来实现这一点,事实上,如果您使用RESTful资源并遵循命名约定,则根本不需要代码,但这一点太神奇了,因为它隐藏了rails为您所做的事情
即:get操作加载与传递给form_for的对象名匹配的对象时,rails将使用数据库中该对象的属性值填充表单字段。然后,当客户端提交表单时,rails将这些字段编码到请求中,作为该对象的参数,然后您可以在:post操作中更新这些字段。有关更详细的处理方法,请参见该官员
如果这有点过于基本,我很抱歉,但获得基本模式很重要,因为解决问题2的一般方法是相同的:
- 你真的需要那些额外的桌子吗?如果每个维护行 包含单个项目的属性 工厂,这可能更有意义 只需将属性放入 factory表并简化您的表单 和行动
- 属性,例如:维护级别可能更高 恰当地表示为 :带单选按钮的字符串类型 设置级别的窗体
<% form_for :factory, @factory, :url => { :action => "edit" } do |f| %>
<%= f.checkbox :now_operating %>
...