假设我有一个将其设置存储在数据库中的应用程序。
要修改设置,我只需使用slim:
将每个设置打印到表单中Sinatra部分:
get '/settings' do
@settings = Setting.all
slim :showsettings
end
超薄部分:
@@ showsettings
h1 Settings
form action="/settings" method="POST"
table
- @settings.each do |setting|
tr
td
label for="#{setting.name}" #{setting.name}
td
input type="text" name="#{setting.name}" value="#{setting.value}"
input.button type="submit" value="Update Settings"
当我提交表单时,我会回到/settings
并希望处理POST请求。我知道所有参数都存储在params
变量中。
如果我打印params,我会收到以下字符串:
["name1", "value1"]["name2", "value2"]["name3", "value3"]["name4", "value4"]
当我不知道如何命名时,如何处理所有提交的参数?当然,我可以将参数名称硬编码到代码中,但这很难维护。
修改
我基本上寻找的东西就像Perl中的keys
函数,我可以用于for my $key ( keys %hash )
......
答案 0 :(得分:2)
您可以使用each
直接迭代哈希中的条目,但您不一定需要使用keys
:
post '/settings' do
params.each do |key, value|
Setting.get(key).update(:value => value)
end
end
答案 1 :(得分:1)
自己找到它:
post '/settings' do
params.keys.each do |key|
s = Setting.get(key)
s.update( :value => params[key])
end
end