13

これについていくつかの質問を見ましたが、解決できませんでした...

パーシャルのレンダリング中にパラメーターを渡そうとしています (domainname.com/memory_books/new?fbookupload=yes に似ています)

現在、私はこの行を使用しています:

<%= render :partial => '/memory_books/new', :fbookupload => "yes" %>

部分的には、次を使用して fbookupload のコンテンツを取得しようとしました。

<%= fbookupload %>

「未定義のローカル変数」エラーが発生し、

<%= params.inspect %>

パラメータとして fbookupload を表示しません。

パラメータ :fbookupload に沿って部分的なパスを取得するにはどうすればよいですか?

ありがとうございました。

アップデート:

これをレンダー内でレンダリングしているという事実と何か関係があるのでしょうか?

つまり、あるページ (/fbookphotos/show)

<%= render :partial => '/memory_books/new', :fbookupload => "yes" %>

次の方法で (posts/show) を使用して別のページによってレンダリングされています:

<%= render :partial => '/fbookphotos/show' %>

だから私はこれをレンダー内でレンダリングしています。

4

5 に答える 5

20

これを試して:

<%= render :partial => '/memory_books/new', :locals => {:fbookupload => "yes"} %>
于 2012-07-01T16:26:35.530 に答える
17

後世のためにコメントからそれを取り出します。この構文は正しいです:

render '/memory_books/new', fbookupload: "yes"

ただし、ローカル変数を指定せずに同じパーシャルをレンダリングするための参照がある場合、たとえば

render '/memory_books/new'

その後、fbookupload変数は使用できなくなります。同じことが複数のローカル変数にも当てはまります。

render 'my_partial', var1: 'qq', var2: 'qqq'

一度だけ発生する場合に機能します。しかし、コードのどこかにそのようなものがあれば

render 'my_partial', var1: 'qq'

var2使用できなくなります。図に行く...

于 2013-11-17T14:11:42.170 に答える
1

あなたのやり方でそれを行うには:

メイン ビュー:

<% fbookupload = "yes" %>
<%= render :partial => '/memory_books/new', :locals => {:fbookupload => fbookupload} %>

そして部分的に:

<%= fbookupload %>

2番目のオプション:

理想的にはコントローラーで、それ以外の場合はビューで、インスタンス変数を定義します: @fbookupload = "yes". それならどこでも手に入る。パーシャルは次のようになります。<%= @fbookupload %>

于 2012-07-01T16:42:42.487 に答える
1

Params は単なるリクエスト パラメータなので、params で渡したい場合は、URL に追加する?fbookupload=yesか割り当てる必要params[:fbookupload] = "yes"がありますが、それは良い考えではないと思います。

しかし、params[:fbookupload]', u can replace it withparams[:fbookupload] ||を使用する必要がある場合 fbookupload' を取得し、fbookupload を部分的なローカル ハッシュで渡します。

于 2012-07-01T16:47:34.277 に答える