我有一个简单的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
答案 0 :(得分:0)
没有在使用index.ecr
的所有路线中定义保持参数的变量。一旦完成它就有效了。有趣的是,我没有必要在sinatra的某些路线中定义它。