1

これが私が自分のコードを使用している場所であり、私は近いと思います。

savetomonongoid は、params 配列を mongoid にプッシュする定義です。

私はpluralizeとclassifyメソッドにactivesupportを使用しています

route :get, :delete, :post, :put, '/*/*?/?*?' do |model, action, id|
  case
  when request.get?
    case action
    when "new" 
      haml '#{model}/new'
    when "show" 
      instance_variable_set('@#{model}', model.classify.find(id))
      haml '#{model}/show'
    when "edit" 
      instance_variable_set('@#{model}', model.classify.find(id))
      haml '#{model}/edit'
     else
      instance_variable_set('@#{model.pluralize}', model.classify.asc(made))
      haml '#{model}/index'
    end
  when request.post? || request.put?
    savetomongoid(model, params[model]) ? (redirect '/#{model}/') : (redirect '/#{model}/new')
  when request.delete?
    model.classify.find(id).delete ? (redirect '/#{model}/') : (puts "uhh ohh")
  end
end

get '/*' do
  haml :silence
end

これを任意のパスでロードしようとすると、完全に空白の画面が表示され、ソースは表示されませんが、 localhost:####/ によって Haml :silence に移動するため、一部のルートが機能しています。

3 つのスプラットは、その値をモデル、アクション、ID に入れる必要があります。何か/何か/何かを試してみましたが、まだソースページが表示されません。

感嘆符と疑問符のパターンは、https://github.com/sinatra/sinatraの readme を介して機能すると想定されています

誰か手を貸してくれませんか?私はこれがうまくいくはずだとほぼ確信しています。

また、モデルが存在するかどうかを確認して、モデル内の任意のものの生成クラッドを除外する方法を誰かが提案できますか?

4

1 に答える 1

0

あなたのcaseステートメントは奇妙に見えます。

request_methodの結果をテストしています。この結果は、リクエストのget?、post ?、またはdelete?の値に対して、文字列 "GET"、 "PUT"、 "POST"、または"DELETE"を返します。trueまたはfalseを返すメソッド。

一致するものがない場合は、常にcaseステートメントから外れるようです。

次のようになります。

route:get、:delete、:post、:put、'/ /?/?*?' 行う|モデル、アクション、ID |
ケースrequest.request_methodwhen
"GET"
..。

于 2012-05-01T05:24:52.680 に答える