2011-07-21 5 views
1

] Sinatraを使用してサイトを作成しています。すべてがうまくいきました。または、beforeブロックのparams[]ハッシュにアクセスする必要があるまででした。前ブロックのSinatra/Rack params [

基本的に、私はこれをやろうとしている:

before do 
    if params[:forum_id] 
    @forum = Forum.find(params[:forum_id]) 
    build_breadcrumbs(@forum.parents) 
    # ... more code, snipped to keep it short 
    end 
end 

をしかし、事はある、私は誰もが任意のアイデアを持っていない、beforeブロックでparams[]ハッシュ呼び出すことはできませんか?

このコードをbeforeブロックに入れている理由は、すべてのページで、私がgetpostブロックのすべてに移動して入れる必要がないからです。ドキュメントから

答えて

6

:フィルタはルートがされるのと同じ コンテキスト内の各要求の前に評価され、リクエストとレスポンスを変更することができ

前に。

これは実際のリクエストの前に発生するため、リクエストパラメータにアクセスすることはできません。あなたができることは、繰り返しコードをメソッドに入れて、ルートブロックで呼び出すことです。

+1

あなたの投稿は私の前に '/ f /:forum_id''(と他のフォーラムページ)を試してみるというアイデアを与えてくれました。ありがとうございました :)。 – Kliknik

+0

あなたの歓迎、喜んでそれが助け! :-)あなたの質問を解決してマークするには、投票数の下の小さな目盛りをクリックしてこの回答を受け入れることができます。そうすれば、他のユーザーはあなたがもう助けを必要としないことを知ることができます。回答があなたの質問を解決した場合にのみこれを実行してください。 –

1

これはもう真実ではありません。私はちょうどそれをテストした。 {...}