0

こんにちは、私は現在、最初のプロジェクトに取り組んでおり、ログイン/セッションを行う前に機能を構築しようとしています。ユーザーが多くのアルバム (多くの写真を含む) を持ち、アルバムへのアクセスが友人間で共有される写真アルバム Web サイトを作成しようとしています。しかし、私は私の後にそれに気づいていますalbums#create

http://localhost:3000/users/18/albums/new(ここは問題ありません)

にリダイレクトされalbums#showます:

http://localhost:3000/albums/20(問題!!)

URLにもuser_idがあってはいけませんか?? それとも、複数のユーザーに属しているため、URL に user_id が添付されていませんか? ここに私のルートがあります:

Pholder::Application.routes.draw do
resources :users do
  resources :albums 
end

resources :albums do
  resources :pictures
end

root :to => "users#index"

場合の私のモデルは次のとおりです。

ユーザーモデル

class User < ActiveRecord::Base

  has_secure_password
  attr_accessible :email, :name, :password, :password_confirmation
  validates_presence_of :password, :on => :create

  validates_format_of :name, :with => /[A-Za-z]+/, :on => :create
  validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
  validates_length_of :password, :minimum => 5, :on => :create

  has_many :user_albums
  has_many :albums, :through => :user_albums
  accepts_nested_attributes_for :albums

end

アルバムモデル

class Album < ActiveRecord::Base
  attr_accessible :avatar, :name, :description
  has_many :user_albums
  has_many :users, :through => :user_albums
  has_many :photos
end

フォトアルバム

class Photo < ActiveRecord::Base
  belongs_to :album
end

アルバム コントローラ

class AlbumsController < ApplicationController

    def index
      @albums = Albums.all

      respond_to do |format|
        format.html
        format.json { render json: @albums }
      end
    end

    def show
      @albums = Album.all
      @album = Album.find(params[:id])
      @photo = Photo.new
    end

    def update
    end

    def edit
    end

    def create
      # @user = User.find(params[:albums][:user_id])
      # @users = User.all
      @album = Album.new(params[:album])
      # @album.user_id = @user.id
      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 new
      @user = User.find(params[:user_id])
      @album = Album.new
    end

    def destroy
    end


end

他に必要なファイルがあれば教えてください。

4

1 に答える 1

0

この行により、問題のアクションにredirect_to @albumリダイレクトされます。 このコードを次のように変更すると、アプリは次のようなアクションにリダイレクトされます。 保存後に必要な動作に依存します。 show@album
redirect_to users_pathindexusers_controller

これを読むことも役に立ちます: http://guides.rubyonrails.org/routing.html

于 2012-10-01T18:40:32.360 に答える