Ruby 如何使用Sinatra读取未知的post数据?
假设我有一个在数据库中存储设置的应用程序 对于修改设置,我只需使用slim将每个设置打印到表单中: 西纳特拉部分:Ruby 如何使用Sinatra读取未知的post数据?,ruby,post,sinatra,Ruby,Post,Sinatra,假设我有一个在数据库中存储设置的应用程序 对于修改设置,我只需使用slim将每个设置打印到表单中: 西纳特拉部分: get '/settings' do @settings = Setting.all slim :showsettings end 纤细部分: @@ showsettings h1 Settings form action="/settings" method="POST" table - @settings.each do |setting| t
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
变量中
如果我打印参数,我将收到以下字符串:
["name1", "value1"]["name2", "value2"]["name3", "value3"]["name4", "value4"]
当我不知道如何命名时,如何处理所有提交的参数?当然,我可以将参数名称硬编码到代码中,但这很难维护
编辑:
基本上我在寻找的是Perl中的
keys
函数,我可以用它来为我的$key(keys%hash)..找到它:
post '/settings' do
params.keys.each do |key|
s = Setting.get(key)
s.update( :value => params[key])
end
end
我自己发现的:
post '/settings' do
params.keys.each do |key|
s = Setting.get(key)
s.update( :value => params[key])
end
end
我自己发现的:
post '/settings' do
params.keys.each do |key|
s = Setting.get(key)
s.update( :value => params[key])
end
end
我自己发现的:
post '/settings' do
params.keys.each do |key|
s = Setting.get(key)
s.update( :value => params[key])
end
end
您可以使用直接遍历散列中的条目,而不必使用
键
:
post '/settings' do
params.each do |key, value|
Setting.get(key).update(:value => value)
end
end
您可以使用直接遍历散列中的条目,而不必使用
键
:
post '/settings' do
params.each do |key, value|
Setting.get(key).update(:value => value)
end
end
您可以使用直接遍历散列中的条目,而不必使用
键
:
post '/settings' do
params.each do |key, value|
Setting.get(key).update(:value => value)
end
end
您可以使用直接遍历散列中的条目,而不必使用
键
:
post '/settings' do
params.each do |key, value|
Setting.get(key).update(:value => value)
end
end
处理您不知道的内容有点困难如果我在Perl中得到一个哈希值,我还可以使用
为$key(keys%hash)
遍历它。我在这里找类似的东西。我只想将所有参数存储回数据库…使用ActiveRecord
您实际上可以执行类似Klass.create(params)
的操作,将params
作为散列,但是您需要确保散列的内容是safe@bjhaid当前位置查看我自己的答案和评论。如果您知道如何处理您不知道的内容有点困难,那么这很容易。如果我在Perl中得到一个哈希,我还可以使用对$key(keys%hash)
进行遍历。我在这里找类似的东西。我只想将所有参数存储回数据库…使用ActiveRecord
您实际上可以执行类似Klass.create(params)
的操作,将params
作为散列,但是您需要确保散列的内容是safe@bjhaid当前位置查看我自己的答案和评论。如果您知道如何处理您不知道的内容有点困难,那么这很容易。如果我在Perl中得到一个哈希,我还可以使用对$key(keys%hash)
进行遍历。我在这里找类似的东西。我只想将所有参数存储回数据库…使用ActiveRecord
您实际上可以执行类似Klass.create(params)
的操作,将params
作为散列,但是您需要确保散列的内容是safe@bjhaid当前位置查看我自己的答案和评论。如果您知道如何处理您不知道的内容有点困难,那么这很容易。如果我在Perl中得到一个哈希,我还可以使用对$key(keys%hash)
进行遍历。我在这里找类似的东西。我只想将所有参数存储回数据库…使用ActiveRecord
您实际上可以执行类似Klass.create(params)
的操作,将params
作为散列,但是您需要确保散列的内容是safe@bjhaid当前位置查看我自己的答案和评论。如果您知道如何不必使用键
,您可以使用:params.each do | key,value |…
,迭代每个键->值对,然后在更新s.update(:value=>value)
@matt:将此作为答案发布,您将获得我的代表:-)您不必使用键
,您可以使用:params.each do | key,value |…
迭代每个键->值对,然后在更新s.update(:value=>value)
@matt:将此作为一个答案发布,您将得到我的代表:-)您不一定需要使用键
,您可以使用:params.each do |键迭代每个键->值对,value |…
,然后在更新s.update(:value=>value)
@matt:将此作为答案发布,您将从我那里获得代表:-)您不一定需要使用键
,您可以使用:参数对每个键->值对进行迭代。每个do |键,值|…
,然后在更新s.update(:value=>value)时
@matt:将此作为答案发布,您将获得我的代表:-)