0

Crystal/kemal に移行しようとしている単純な ruby​​/sinatra アプリがあります。ユーザーがフォームの選択を送信すると、sinatra バージョンはパラメーターをハッシュとして POST します

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

次に、選択内容をルートrender index.erbでビューに渡します。postただし、ケマルでは、パラメーターを収集できますが、ビューでそれらにアクセスする方法がわかりません。エラーが発生し続けますundefined local variable or method

ビューが送信されたパラメータにアクセスできるようにするにはどうすればよいですか?

postルートのシナトラ コードは次のとおりです。

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
4

1 に答える 1

0

を使用するすべてのルートで変数保持パラメータを定義しませんでしたindex.ecr。それが完了すると、うまくいきました。ただし、sinatra の一部のルートでそれを定義する必要がなかったことは興味深いことです。

于 2018-02-09T02:25:37.120 に答える