Так что я просто сделал один из своих объектов вложенным ресурсом моего пользовательского объекта. Теперь все мои ссылки не работают, и мой индекс не будет отображаться. Я получаю сообщение об ошибке:ReNesting Resource Routes in Rails
/views/photos/index.html.haml where line #8 raised:
No route matches {:action=>"show", :controller=>"photos", :id=>nil, :user_id=>nil} missing required keys: [:id, :user_id]
с этой линии бытия, где его найти вопрос:
= link_to photo.title, user_photo_path(@user, @photos)
Это мой контроллер для моих фотографий объекта:
class PhotosController < ApplicationController
before_action :find_photo, only: [:show, :edit, :update, :destroy, :upvote, :downvote]
before_action :authenticate_user!, except: [:index, :show]
def index
@photos = Photo.all.order(:cached_weighted_score => :desc)
end
def show
@comments = Comment.where(photo_id: @photo)
@photo = Photo.find(params[:id])
end
Мои маршруты выглядеть это:
Rails.application.routes.draw do
devise_for :users
root 'photos#index'
resources :users do
resources :photos do
member do
get "like", to: "photos#upvote"
get "unlike", to: "photos#downvote"
end
resources :comments
end
end
end
Это мой контроллер пользователя:
class UsersController < ApplicationController
def show
@user = User.find_by(params[:id])
@photos= @user.photos.order(:cached_weighted_score => :desc)
end
end
наконец вид, который генерирует код ошибки:
.container
.row
.col-lg-12
%h1.page-header Most Popular Photos
- @photos.each do |photo|
.thumbnail.col-lg-3.col-md-4.col-xs-6.thumb
%h2
= link_to photo.title, user_photo_path(@user, @photo)
= link_to (image_tag photo.image.url(:small)), photo
%p
= photo.get_likes.size
Likes
= link_to "Add New Photo", new_photo_path
Любая помощь приветствуется. Мое последнее изменение заключалось в добавлении маршрута фотографий ниже пользовательского маршрута.
Он предназначен для ссылки на действие шоу для одной из фотографий пользователей, а не для всех пользователей. – ChiefRockaChris
Сначала попробуйте не правильно. См. Последние. – steakchaser
Спасибо за помощь! Поэтому я только что внедрил последний ответ, а теперь вместо двух ключей: id &: user_id. В нем говорится, что отсутствует одно: «Нет маршрутов, совпадающих с: {: action =>" show ",: controller =>" photos ",: id =>" 4 ",: user_id => nil} Отсутствующие ключи: [: user_id] '. Мы приближаемся – ChiefRockaChris