私はCプログラミングのバックグラウンドを持っており、サイドプロジェクトのRuby/Railsを学んでいます。現在、私は変数の有効範囲の仕組みを理解するのに苦労しています。ここに私が打つ問題の例があります。私はUserとProductモデルを持っています。製品DBにはさまざまな製品が格納されており、フィールドの1つはUserテーブルに格納されているuseridと一致するuseridフィールドです。ユーザーがログインすると、ユーザーの名前、電子メールなどが表示されます(これは@ current_userに格納されます)。次に、ユーザーが所有する別の製品を表示するためのリンクがあります。私は、ユーザーに次のコードを経由して、これを行う/このようなshow.html.erb: ... Railsの別のコントローラで1つのコントローラ変数にアクセス
名: <% = @ current_user.name%>
... <% =のlink_to "products"、products_path、id: "products"%>これまでのところとても良いです。 「Products」リンクをクリックするとproducts/index.html.erbに移動し、次のコードが実行されます(この表示をフィルタリングして、@ current_user.useridが所有する製品のみを表示します。私は、WHERE句は、すべての製品は、私が欲しいものではありませんどの表示AR「場合」を削除した場合@current_userが。私は信じてnilに評価されるコードは、次のことは私に、ランタイムエラーが発生します。任意のヒントに感謝されるだろう。
<tbody>
<% @products.each do |product| %>
<tr>
<td><%= product.userid if product.userid == @current_user.userid %></td>
<td><%= product.productName if product.userid == @current_user.userid %></td>
<td><%= product.productLink if product.userid == @current_user.userid %></td>
おかげで、
私は貴重な宝石を調べることをお勧めします。これがなければ、ユーザをフェッチして結果をメモするアプリケーションヘルパーメソッド 'current_user'を追加します。 Deviseは、ほとんどのRailsプロジェクトで使用されている非常に人気のある宝石です。しかし、あなたが好きなら私は手動の方法で答えを作り出すことができます。 –