У меня есть модель, которая принадлежит Пользователь модель. Рельсы возвращает эту ошибку, когда я пытаюсь открыть новый вид для /users/4/photos/new
:Отсутствует необходимый ключ: id на новой фотографии
No route matches {:action=>"index", :controller=>"photos", :user_id=>"4"} missing required keys: [:id]
Это мой PhotosController:
class PhotosController < ApplicationController
def index
find_user
@photos = @user.photos
end
def new
find_user
@photo = @user.photos.build
end
def show
find_photo
end
def create
@photo = Photo.new(params[:photo])
if @photo.save
if params[:images]
params[:images].each { |image|
@user.photos.create(image: image)
}
end
else
render 'new'
end
end
def update
find_user
@photo = @user.photos.find(params[:id])
if @photo.update
redirect_to photos_path
else
render 'edit'
end
end
def destroy
find_photo
@photo.destroy
redirect_to photos_path
end
private
def find_user
@user = User.find(params[:user_id])
end
def find_photo
@photo = Photo.find(params[:id])
end
def photo_params
require(:photo).permit(:title, :image, :user_id)
end
end
И это мой _form частичный для фотографий просмотров.
<%= form_for @photo, :html => { class: 'form-horizontal', multipart: true } do |f| %>
<%= f.label :title %>
<%= f.text_field :title, class: "input-field form-control" %>
<%= f.label :pictures %>
<%= file_field_tag "images[]", type: :file, multiplue: true %>
<%= f.submit nil, class: "btn btn-primary" %>
Я не понимаю, как ID отсутствует, я обеспечиваю его через find_user метода.
Update:
# routes.rb
Rails.application.routes.draw do
root 'welcome#index'
# prevedene rute
get "/pocetna" => "welcome#index", as: "index"
get "/o-sajtu" => "welcome#about", as: "about"
get "/moj-profil" => "users#show", as: "profile"
post "/users" => "users#create"
get "/users" => "users#index", as: "users"
get "/user" => "users#index"
get "https://stackoverflow.com/users/:id" => "users#show", as: "user"
get "https://stackoverflow.com/users/:id/edit" => "users#edit", as: "edit_user"
patch "https://stackoverflow.com/users/:id" => "users#update"
get "https://stackoverflow.com/users/add" => "users#new", as: "new_user"
resources :sessions, only: [:new, :create, :destroy]
get "/login" => "sessions#new", as: "login"
post "/login" => "sessions#create"
get "/logout" => "sessions#destroy", as: "logout"
delete "/logout" => "sessions#destroy"
resources :users do
resources :photos
end
end
Update я получаю новую ошибку Теперь
undefined method `photos_path' for #<<Class:0x007f4f14f16160>:0x00000004f040e8>
Первая линия вида маркируется.
где ваш 'routes.rb' код? – Emu
@Emu Я обновил вопрос. – Nikola
также добавьте ссылку, которую вы используете, чтобы создать новую фотографию –