在凯马尔使用params

时间:2018-02-08 04:12:42

标签: parameters sinatra kemal

我有一个简单的ruby / sinatra应用程序我试图迁移到crystal / kemal。当用户提交表单选择时,sinatra版本将params作为哈希

发布
{"category"=>["selection1", "selection2",..]}

然后,我在render index.erb路由中通过post将选择传递给视图。但是在凯马尔,我可以收集参数,但无法弄清楚如何在视图中访问它们。我一直收到错误undefined local variable or method

如何让视图访问提交的参数?

以下是post路线的sinatra代码:

post '/' do
  if params.values.flatten.length < 1
    flash[:warning] = "Please choose at least one AED"
    redirect '/'
  else
    params
    erb :index
  end
end

和相应的kemal代码:

post "/" do |env|
  selected_drugs = env.params.body.fetch_all("drugs")
  if selected_drugs.size < 1
    env.flash["warning"] = "Please choose at least one AED"
    render "src/views/index.ecr"
  else
    selected_drugs
    render "src/views/index.ecr"
  end
end
Kemal.run

1 个答案:

答案 0 :(得分:0)

没有在使用index.ecr的所有路线中定义保持参数的变量。一旦完成它就有效了。有趣的是,我没有必要在sinatra的某些路线中定义它。