rails儲存的方法區別:http://rubyer.me/blog/262/
這次的功能需求是一次能夠存取多筆資料,且剛好是符合一對多的資料型態,先從一對多(user-to-calendars)的設定開始吧!
One-to-Many
User(one),編輯 app/models 底下的 user.rb 檔,加入
has_many :calendars, :dependent => :delete_all
Calendars(many),一樣編輯 models 下的 calendar.rb,加入
belongs_to :user
可以注意到 has_many 字尾有{s}(複數), belongs_to 是沒有的(單數)。
Create Multiple Records at Once
編輯calendar_controller.rb
def new
@calendar = []
20.times do
@calendar << calendar.new
end
end
def create
if params.has_key?("calendar")
@calendar = calendar.create(calendar_params(params["calendar"]))
else
params["calendars"].each do |calendar|
if calendar["issave"] && calendar["vdate"] != ""
@calendar = calendar.create(calendar_params(calendar))
end
end
end
if @calendar.save
redirect_to calendars_url
else
render :action => :new
end
flash[:notice] = "calendar was successfully created"
end
編輯views/calendars/new.html.erb
<%= form_tag calendars_path do %>
<% i=0 %>
<table border="0">
<tr>
<td>儲存</td>
<td>日期</td>
<td>時間</td>
</tr>
<% @calendar.each do |calendar| %>
<%= fields_for 'calendars[]', calendar do |f| %>
<tr>
<td>
<div>
<% if i < 1 %>
<%= hidden_field_tag('calendars[][issave]', true) %>
<% else %>
<%= check_box_tag('calendars[][issave]', true) %>
<% end %>
<%= f.hidden_field :user_id, :value => current_user.id %>
</div>
</td>
<td>
<div>
<%= f.date_field :vdate %>
</div>
</td>
<td>
<div>
<%= f.select(:vtime) do %>
<% (0..23).each do |t| -%>
<%= content_tag(:option, t.to_s.rjust(2, '0'), value: t) %>
<% end %>
<% end %>
</div>
</td>
<% i=i+1 %>
<% end %>
</tr>
<% end %>
</table>
<div class="actions">
<%= submit_tag %>
</div>
<% end %>
執行後的畫面
沒有留言:
張貼留言