请教:在sinatra、datamapper、mysql环境下,如何通过form表单同时修改多条记录?

yiduchuanshuo 2016-04-06 03:54:02
我是个ruby新手,想通过form表单同时修改数据库中的多条记录,但是目前采用的方法有点傻,如果同时更新上百条记录的话就更麻烦了,请大神指点,如何才能简化?通过数组可以吗?代码如下:
主程序:

require 'sinatra'
require 'data_mapper'

DataMapper.setup(:default, 'mysql://user:password@hostname/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>


我网上查到一篇清箫的专栏《 Form表单传递数组》http://blog.csdn.net/woxueliuyun/article/details/6246791,似乎是解决类似问题的,但文中只提到用PHP如何获得这个数组,在sinatra中应该怎么做呢?
...全文
7870 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,763

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ruby/Rails
社区管理员
  • Ruby/Rails社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧