0

成功した作成イベントがトリガーされた後に消費できるパラメーターをビューコントローラーに渡したいと思います。現在、作成イベントの最後に、次のものがあります。

respond_to do |format|
  if @link.save
    format.html { redirect_to @link, :notice => 'Link was successfully created.', :first => 'true' }
  else
    format.html { render action: "new" }
  end
end

3行目の「最初の」パラメーターを渡そうとしましたが、ビューページで正しく呼び出していないか、ここで正しく設定していません。以下は、ビューページで試して呼び出すために使用しているコードです。

params[:first]
4

2 に答える 2

0

Quatzの答えはうまくいかないと思います。インスタンス変数は、redirect_to を送信した後は使用できません。これは、redirect_to が実際にはリダイレクト Location ヘッダーと共に 302 をブラウザーに返し、ブラウザーがリダイレクトされるためです。そのため、前のリクエストで作成されたインスタンスはまったく利用できません。

あなたの問題には2つの解決策があるかもしれません:

  1. セッションを使用します。session[:first] = true は、redirect_to を呼び出す前です。その後、session[:first] を使用して値にアクセスできます。
  2. redirect_to を次のように変更します

    redirect_to link_path(@link, :first => 'true'), :notice => 'リンクが正常に作成されました.'}

パラメータで渡すことができる名前付きルートを使用します。

于 2013-05-05T08:23:33.923 に答える
0

そのような場合にインスタンス変数を使用できます。このようにインスタンス変数 @first を作成します。

@first = params[:first]

ビューファイルでこれを使用します。

<%= @first.attributes %>
于 2013-05-05T05:45:23.780 に答える