web-dev-qa-db-ja.com

レンダリングでパラメータを渡す-Rails 3

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

パーシャルのレンダリング中にパラメーターを渡そうとしています(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" %>

(投稿/ショー)を介して別のページによってレンダリングされています:

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

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

10
user749798

これを試して:

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

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

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

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

render '/memory_books/new'

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

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

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

render 'my_partial', var1: 'qq'

そうして var2は利用できなくなります。図に行く.。

14
Vadym Tyemirov

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

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

1
Yuri Barbashov

あなたのやり方でそれをするために:

メインビュー:

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

そして部分的に:

<%= fbookupload %>

2番目のオプション:

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

0
Anil

すでに回答済みですが、これがRails 5.2:

部分呼び出し:

<%= render partial: 'some_partial', locals: { value: 'some_value' } %>

明示的にpartialを追加する必要があります。そうしないと、機能しません。

パーシャル自体では、local variableとしてアクセスするため、これはvalue == 'somevalue'になります。

部分的なレンダラーに関してRails ドキュメント を確認してください。

0
estani