私はこれについていくつかの質問を見ましたが、それを解決することができませんでした...
パーシャルのレンダリング中にパラメーターを渡そうとしています(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' %>
だから私はこれをレンダリング内でレンダリングしています。
これを試して:
<%= render :partial => '/memory_books/new', :locals => {:fbookupload => "yes"} %>
後世のためのコメントからそれを取り出します。この構文は正しいです:
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
は利用できなくなります。図に行く.。
Paramsは単なるリクエストパラメータなので、paramsで渡したい場合は、URL ?fbookupload=yes
に追加するか、params[:fbookupload] = "yes"
を割り当てる必要がありますが、それは良い考えではないと思います。
ただし、params[:fbookupload]', u can replace it with
params [:fbookupload]を使用する必要がある場合|| fbookupload '、および部分的なローカルハッシュでfbookuploadを渡します。
あなたのやり方でそれをするために:
メインビュー:
<% fbookupload = "yes" %>
<%= render :partial => '/memory_books/new', :locals => {:fbookupload => fbookupload} %>
そして部分的に:
<%= fbookupload %>
2番目のオプション:
理想的には、コントローラーで、そうでない場合はビューで、インスタンス変数を定義します。@fbookupload = "yes"
。その後、どこでも利用できます。パーシャルは次のようになります:<%= @fbookupload %>
すでに回答済みですが、これがRails 5.2:
部分呼び出し:
<%= render partial: 'some_partial', locals: { value: 'some_value' } %>
明示的にpartial
を追加する必要があります。そうしないと、機能しません。
パーシャル自体では、local variable
としてアクセスするため、これはvalue == 'somevalue'
になります。
部分的なレンダラーに関してRails ドキュメント を確認してください。