行&专栏,宝贝。行&列。
在一个表格中:
当用户添加新名称& :metric我希望它创建一个新列。
当用户添加新的:result_value& :date_value我希望它创建一个新行。
这是我目前的表格:
对于我的生活,我无法弄清楚为什么看似如此基本的东西如此困难。我不知道我是否想在数据库,模型,帮助器或索引视图中创建行和列和/或我是否应该使用其他语言或gem来帮助我。任何方向都会非常感激,因为十几个谷歌搜索还没有为我做过。
我在数据库中使用add_column
还是什么?
class CreateQuantifieds < ActiveRecord::Migration
def change
create_table :quantifieds do |t|
t.string :categories
t.string :name
t.string :metric
t.timestamps null: false
end
end
end
或者我是否通过模型添加列?
class Quantified < ActiveRecord::Base
belongs_to :user
has_many :results #correct
accepts_nested_attributes_for :results, :reject_if => :all_blank, :allow_destroy => true #correct
scope :averaged, -> { where(categories: 'averaged') }
scope :instance, -> { where(categories: 'instance') }
CATEGORIES = ['averaged', 'instance']
end
class Result < ActiveRecord::Base
belongs_to :user
belongs_to :quantified
end
或者我一直在玩索引视图我已经尝试了各种各样的标签和html标签,但我永远无法让代码看起来像上面那样,这就是为什么我认为答案可能更深层次。< / p>
<!-- Default bootstrap panel contents -->
<div id="values" class="panel panel-default">
<div class="panel-heading"><h4><b>AVERAGE</b></h4></div>
<table>
<% @averaged_quantifieds.each do |averaged| %>
<% if averaged.user == current_user %>
<th><%= averaged.name %> (<%= averaged.metric %>)</th>
<td><% averaged.results.each do |result| %>
<tr><td><%= result.date_value.strftime("%m-%Y") %></td>
<td><%= result.result_value %></td></tr>
<% end %></td>
<% end %>
<% end %>
</table>
</div>
<br>
<br>
<br>
<br>
<!-- Default bootstrap panel contents -->
<div id="values" class="panel panel-default">
<div class="panel-heading"><h4><b>INSTANCE</b></h4></div>
<table>
<% @instance_quantifieds.each do |instance| %>
<% if instance.user == current_user %>
<th><%= instance.name %> (<%= instance.metric %>)</th>
<td><% instance.results.each do |instance| %>
<tr><td><%= result.date_value.strftime("%m-%Y") %></td>
<td><%= result.result_value %></td></tr>
<% end %></td>
<% end %>
<% end %>
</table>
</div>
<div class="values-button">
<%= link_to new_quantified_path, class: 'btn' do %>
<b><span class="glyphicon glyphicon-plus"</span></b>
<% end %>
</div>
答案 0 :(得分:1)
我认为您可能误解了数据库应该如何使用。
我认为您不希望实际的数据库表是动态的。相反,您应该设置两个表。一个用户,一个用于度量。然后,用户可以添加新指标。
# == Schema Information
# Table name: users
# id :integer
Class User < ActiveRecord::Base
has_many :metrics
end
# == Schema Information
# Table name: metrics
# id :integer
# type :string
# result :string
# user_id :integer
Class Metric < ActiveRecord::Base
belongs_to :user
end
这样,您可以根据需要创建任意数量的指标。您可以通过:user_id字段确定度量标准属于谁。
从头到脚阅读此内容应该有所帮助:http://guides.rubyonrails.org/association_basics.html