こんにちは、現在ネストされたリソースを扱っています。
ルート
Pholder::Application.routes.draw do
resources :users do
resources :albums do
resources :photos
end
end
end
3 つのモデル (ユーザー、アルバム、写真) があります。ユーザー登録とアルバム作成はできたのですが、写真のフォームを作ろうとして行き詰まっています。アルバムの作成時に、ユーザーはアルバム/ショー ページにリダイレクトされます。
アルバム/ショー
<% if @album.photos.any? %>
yes pics
<% else %>
no pics
<% end %>
<%= link_to "Upload new pics!", new_user_album_photo_path(@user, @album) %>
ご覧のとおり、ページの下部に新しい写真へのパスがあり、そこに問題があります。リンクをクリックすると、エラーが表示されます。
undefined method
photos_path' for #<#:0x007fb69e167220>`
そのページの 3 行目でエラーが発生します (写真/新規)
写真/新着
<% provide(:title, "Upload pictures") %>
<%= form_for(@photo, :html => { :multipart => true }) do |f| %>
<%= f.file_field :photo %>
<% end %>
コントローラーに間違った情報を入力しているのではないかと思います (コントローラーに何を入力するかについてはまだ非常に不安定です)。これが私の写真コントローラーです。
写真コントローラー
class PhotosController < ApplicationController
def new
@user = User.find(params[:user_id])
@album = @user.albums.find(params[:album_id])
@photo = @album.photos.build
end
def create
@album = Album.find(params[:album_id])
@photo = @album.photos.build(params[:photo])
respond_to do |format|
if @album.save
format.html { redirect_to @album, notice: 'Album was successfully created.' }
format.json { render json: @album, status: :created, location: @album}
else
format.html { render action: "new" }
format.json { render json: @album.errors, status: :unprocessable_entity }
end
end
end
def show
@album = Album.find(params[:album_id])
@photos = @album.photos
end
end
私のフォームは間違っていますか?コントローラーに何を入れるべきか、エラーがフォームで発生しているのかコントローラーで発生しているのかがわかりません。ありがとう
さらに情報が必要な場合はお知らせください。