1

あなたが持っていると言う:


get '/' do
  haml :index
end

get '/form' do haml :form end

post '/form' do @message = params[:message] redirect to ('/') --- how to pass @message here? end

@messageインスタンス変数を"/"アクションでも使用できるようにしたい(渡したい)ので、hamlビューで表示できます。セッション、フラッシュ、@@ class_variable、またはdbの永続性を使用せずにこれを行うにはどうすればよいですか?

メソッド間で値を渡す作業をしているように、単純に値を渡したいのです。

セッションCookieを使用したくないのは、ユーザーがセッションCookieをオフにできる可能性があるためです。また、すべてのコードに公開されるクラス変数であることが好きではありません。また、データベースのオーバーヘッドをかける必要もありません。

ありがとう

編集:

これは、レールでこれに対処する非常に簡単な方法を説明する別の質問です

Railsでパラメータを渡すredirect_to

以下は、私がフォーラムから収集したトピックに関する詳細です。これは、Railsで機能しますが、私の経験では、Sinatraでは機能しません(ただし、何か間違ったことをした可能性があるため、チェックしてください)。

action1の最後にaction2にリダイレクトする場合は、リダイレクトの最後に値を追加するだけです。

my_var = <some logic>
redirect_to :action => 'action2', :my_var => my_var

同じスレッドで、別のユーザーが次のことを提案します。

def action1
  redirect_to :action => 'action2', :value => params[:current_varaible]
end
def action2
 puts params[:value].inspect
end

ソース:http ://www.ruby-forum.com/topic/134953

このようなものはシナトラで動作しますか?ありがとう

4

2 に答える 2

3

試す

before do
  @message = params[:message]
end

@messageどのルートでも利用できる必要があります

編集

post '/form' do
  @message = params[:message]
  #redirect to ('/') --- how to pass @message here?
  haml :index, locals: {msg: @message}
end

使用しないでください。ハッシュredirectを渡すことができます。localsindex.haml msg変数で利用できるはずです。

于 2012-10-13T05:47:29.570 に答える