我被困在下面的代碼幾天了。任務是通過一頁中的表單(可能超過一百行)更新數據庫表中的多行。我搜索了網頁,並學習瞭如何使用'[]'從這個博客獲取表單中的數組:http://www.randomsnippets.com/2008/02/21/how-to-dynamically-add-form-elements-via-javascript/,但我的問題是我不知道如何將數組傳遞給我的ruby代碼。任何人都可以幫我嗎?謝謝! 這裏是主要的紅寶石文件(main.rb的):如何使用Sinatra和Datamapper將數組從數據庫傳遞到數據庫?
require 'sinatra'
require 'data_mapper'
DataMapper.setup(:default, 'mysql://user:[email protected]/database')
class Check
include DataMapper::Resource
property :id, Serial
property :answer, String
end
DataMapper.finalize.auto_upgrade!
get '/' do
@checks = Check.all :order => :id.asc, :limit => 5
erb :home
end
put '/update' do
n = Check.get params[:id1]
n.answer = params[:answer1]
n.save
n = Check.get params[:id2]
n.answer = params[:answer2]
n.save
n = Check.get params[:id3]
n.answer = params[:answer3]
n.save
n = Check.get params[:id4]
n.answer = params[:answer4]
n.save
n = Check.get params[:id5]
n.answer = params[:answer5]
n.save
redirect '/'
end
下面是其位於views目錄的嵌入式home.erb文件:
<% i=0 %>
<form action="/update" method="post" id="edit">
<% @checks.each do |check| %>
<%= check.id %>
<% i = i + 1 %>
<input type="hidden" name="_method" value="put">
<input type="hidden" name="id<%= i %>" value="<%= check.id %>" />
<input type="text" name="answer<%= i %>" value="<%= check.answer %>" />
<p>
<% end %>
<input type="submit" value="update"></p>
</form>
數組風格home.erb也許是這樣的:
<form action="/update" method="post" id="edit">
<% @checks.each do |check| %>
<input type="hidden" name="_method" value="put">
<input type="hidden" name="myid[]" value="<%= check.id %>" />
<input type="text" name="myanswer[]" value="<%= check.answer %>" />
<p>
<% end %>
<input type="submit" value="update"></p>
</form>
謝謝安迪!真的行!實際上,我將在包含100個算術問題的練習頁面中使用代碼。我認爲這是一個簡單的方法。 –