Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用Sinatra读取未知的post数据?_Ruby_Post_Sinatra - Fatal编程技术网

Ruby 如何使用Sinatra读取未知的post数据?

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

假设我有一个在数据库中存储设置的应用程序

对于修改设置,我只需使用slim将每个设置打印到表单中:

西纳特拉部分:

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:将此作为答案发布,您将获得我的代表:-)