新しいRails 4アプリのために、古いRuby on Rails 3アプリからいくつかのコードを借りてきました。コードは古いサイトでは機能しますが、新しいサイトでは機能しません。
ここに私のroutes.rbがあります:
scope ':username' do
resources :recipes
end
get "/:username" => "recipes#index"
これが私のコントローラーインデックスです:
def index
@user = User.find_by_username params[:username]
@recipes = Recipe.all
end
そして私の見解:
<% @recipes.each do |recipe| %>
<tr>
<td><%= recipe.name %></td>
<td><%= link_to recipe.name, recipe_path(username: @user.username, id: recipe.id) %></td>
<td><%= link_to 'Edit', edit_recipe_path(recipe) %></td>
<td><%= link_to 'Destroy', recipe, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
しかし、エラーがポップアップします:
undefined method `username' for nil:NilClass
ただし、現在のユーザーのユーザー名はtest
nil ではなく、エラーが表示されないように設定されています。
助けてくれてありがとう!