未定义的方法`albums_path'
undefined method `albums_path'
我不明白为什么会这样,但我收到了这个错误。
undefined method albums_path
它说它在这段代码的第一行:
<%= form_for @album, :html => { :class => 'form-horizontal', multipart: true } do |f| %>
<div class="control-group">
<%= f.label :name, :class => 'control-label' %>
<div class="controls">
但我不明白为什么。这是我的控制器:
class AlbumsController < ApplicationController
before_action :set_album, only: [:show, :edit, :update, :destroy]
respond_to :html
def index
@user = User.find_by_id(params[:id])
@albums = Album.all.where(:user_id => @user)
end
def show
redirect_to user_albums_url
end
def new
@album = Album.new
end
def edit
end
def create
@album = current_user.albums.new(album_params)
respond_to do |format|
if @album.save
if params[:images]
params[:images].each { |image|
@album.pictures.create(image: image)
}
end
format.html { redirect_to @album, notice: 'Gallery 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 update
@album.update(album_params)
redirect_to user_albums_url
end
def destroy
@album.destroy
redirect_to user_albums_url
end
private
def set_album
@album = Album.find(params[:id])
end
def album_params
params.require(:album).permit(:name, :description, :images)
end
end
我的路线如下:
resources :users do
resources :albums do
resources :pictures do
resources :comments
end
end
end
我到处寻找我的代码,甚至提到了 "albums_path",但它并没有在任何地方说明。你们能想到什么问题吗?我试过修复表格,但它似乎不起作用。您可能希望看到的另一件事是 link 到新操作。这里是:
<%= link_to 'New Album', new_user_album_path(:user_id => current_user.id), :class => 'btn btn-mini' %>
我不知道这是否有帮助,但我正在使用回形针 gem 创建相册。
您的 albums
资源嵌套在 users
资源中。因此,您应该在 new
操作中设置用户(或者,更好的是,在 before_filter
中):
before_filter :set_user
# ...
def set_user
@user = User.find(params[:user_id])
end
并在您的表单中添加用户参考:
form_for [@user, @album] do |f|
顺便说一句,除了 @albums = Album.all.where(:user_id => @user)
,您还可以使用(Rails 中更惯用的):@albums = @user.albums
。
我不明白为什么会这样,但我收到了这个错误。
undefined method albums_path
它说它在这段代码的第一行:
<%= form_for @album, :html => { :class => 'form-horizontal', multipart: true } do |f| %>
<div class="control-group">
<%= f.label :name, :class => 'control-label' %>
<div class="controls">
但我不明白为什么。这是我的控制器:
class AlbumsController < ApplicationController
before_action :set_album, only: [:show, :edit, :update, :destroy]
respond_to :html
def index
@user = User.find_by_id(params[:id])
@albums = Album.all.where(:user_id => @user)
end
def show
redirect_to user_albums_url
end
def new
@album = Album.new
end
def edit
end
def create
@album = current_user.albums.new(album_params)
respond_to do |format|
if @album.save
if params[:images]
params[:images].each { |image|
@album.pictures.create(image: image)
}
end
format.html { redirect_to @album, notice: 'Gallery 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 update
@album.update(album_params)
redirect_to user_albums_url
end
def destroy
@album.destroy
redirect_to user_albums_url
end
private
def set_album
@album = Album.find(params[:id])
end
def album_params
params.require(:album).permit(:name, :description, :images)
end
end
我的路线如下:
resources :users do
resources :albums do
resources :pictures do
resources :comments
end
end
end
我到处寻找我的代码,甚至提到了 "albums_path",但它并没有在任何地方说明。你们能想到什么问题吗?我试过修复表格,但它似乎不起作用。您可能希望看到的另一件事是 link 到新操作。这里是:
<%= link_to 'New Album', new_user_album_path(:user_id => current_user.id), :class => 'btn btn-mini' %>
我不知道这是否有帮助,但我正在使用回形针 gem 创建相册。
您的 albums
资源嵌套在 users
资源中。因此,您应该在 new
操作中设置用户(或者,更好的是,在 before_filter
中):
before_filter :set_user
# ...
def set_user
@user = User.find(params[:user_id])
end
并在您的表单中添加用户参考:
form_for [@user, @album] do |f|
顺便说一句,除了 @albums = Album.all.where(:user_id => @user)
,您还可以使用(Rails 中更惯用的):@albums = @user.albums
。