代码之家  ›  专栏  ›  技术社区  ›  stevensonmt

在kemal中使用视图中的参数

  •  0
  • stevensonmt  · 技术社区  · 7 年前

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

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

    然后,我通过以下方式将选择传递给视图 render index.erb post 路线然而,在kemal中,我可以收集参数,但无法确定如何在视图中访问它们。我一直在犯错误 undefined local variable or method .

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

    这是sinatra代码 邮递 路线:

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

    以及相应的凯末尔代码:

    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 回复  |  直到 7 年前
        1
  •  0
  •   stevensonmt    7 年前

    未在使用的所有路由中定义变量holding params index.ecr . 一旦这样做了,它就起作用了。有趣的是,我不必在西纳特拉的某些路线上定义它。