0

我正在使用 Ruby on Rails/Jquery Mobile 开发一个 Web 应用程序。

SQLite 'Inventory' 模式由existingfixture:string、replacementfixture:string 和quantity:integer 组成。还有另外两个表,称为 oldlights 和 newlights。这些仅包含分别用于现有夹具和替换夹具的选项。Oldlights 和 newlights 都有 lightname:string 和 value:integer,其中 value 是给定灯光名称使用的瓦数。

这是它的外观截图

我还希望我的程序能够显示现有灯具与替换灯具的瓦数差异。我希望能够有另一个专栏说明每年节省多少瓦特,但我不知道如何去做。这些值在 oldlights/newlights 中关联。但是,我不知道如何访问它们并在单独的列中使用它们执行数学方程。

显示数据库值的代码:

<fieldset class="ui-grid-c"><center>
         <div class="ui-block-a"><%= inventory.existing %></div>
         <div class="ui-block-b"><%= inventory.replacement %></div>
         <div class="ui-block-c"><%= inventory.quantity %></div>
         <div class="ui-block-d"><%= link_to 'Remove', [inventory.client, inventory], 
               :confirm => 'Are you sure?',
               :method => :delete %></div></center>
</fieldset>

添加库存的代码

    <%= form_for([@client, @client.inventories.build]) do |f| %>
       <fieldset class="ui-grid-c">
         <div class="ui-block-a"><%= f.select :existing, Olight.all.collect{|p| [p.name]}, { :include_blank => true } %></div>
         <div class="ui-block-b"><%= f.select :replacement, Nlight.all.collect{|p| [p.name]}, { :include_blank => true } %></div>
         <div class="ui-block-c"><%= f.number_field :quantity, "data-mini" => "true" %></div>
         <div class="ui-block-d"></div>
       </fieldset>
       <%= f.submit 'Add Inventory'%>
     <% end %>
4

2 回答 2

1

我感谢你必须做很多事情:

  • 首先,您必须从新的和以前的中获得瓦特。为此,有两种解决方案:

    您制作一个正则表达式以从名称中提取瓦特,或者您在灯光上添加一个字段,用户可以在其中指定瓦特。

  • 其次,在“添加库存”单击时,您向服务器发送一个带有额外参数的 ajax 调用,如“newWatts”和“oldWatts”。在服务器端创建操作时,您计算节省的能量并将其保存在数据库中。

你明白吗?

于 2012-06-01T09:47:06.267 回答
1

塞巴斯蒂安部分正确。(解析灯具名称将不起作用,因为在“1-4' 40W-T12-ESMB”命名中,40 不是灯具的瓦数,而是单个 4 英尺 T-12 灯的瓦数,而工程并不像“3-4' 40W-T12-ESMB”灯具的瓦数那么简单 == 3 倍于“1-4' 40W-T12-ESMB”灯具的瓦数。总的灯具瓦数取决于除灯泡功率外,还有许多其他因素。)

你应该阅读这个页面!“第 3 节 - 轻松制作选择框”以获取有关如何设置下拉列表的更多信息——我喜欢使用 options_for_Select 进行构建。我相信您想要显示名称的表单,但新旧灯具的 id 是存储在您的数据库中的。

在您的 Rails 控制器中,当您保存库存组合(现有、替换和计数)时,您使用新旧灯具 ID 来查找它们的功率,进行数学运算,然后存储节省的值。显示页面时,所有数据都应该存在。

在样式说明中,我将 Olight/Nlight.all.collect 代码从页面模板移出并进入控制器,设置视图使用的实例变量......

@existing = Olight.all.collect{|old| [old.name, old.id]}
@replacement = Nlight.all.collect(|new| [new.name, new.id]}
于 2012-06-01T12:16:26.203 回答