1

我目前正在嘗試爲一個項目組合一個畫廊系統與軌道3.我覺得我應該從頭開始做這個更多的控制和學習。但是,當我嘗試從http://localhost:3000/admin/albums/33/images中刪除圖像時,刪除按鈕將轉至http://localhost:3000/admin/albums/1/images。看起來,刪除按鈕取得了所選圖像的ID,而不是將它追加到url的末尾,它用它替換了url中的相冊ID。我需要刪除按鈕才能撥打http://localhost:3000/admin/albums/33/images/1刪除該圖像。我無法弄清楚我的生活。路由畫廊行動

視圖

<% @images.each do |image| %> 
    <%= image.title %> 
    <%= image.description %> 
    <%= image.image_name %> 
    <%= button_to "Delete", admin_album_images_path(image), :method => :delete, :style => "display: block;" %> 
    <%= debug params %> 
<% end %> 

控制器

class Admin::ImagesController < ApplicationController 
    def index 
     @images = Image.all 
    end 
    def new 
     @image = Image.new(params[:id]) 
    end 
    def create 
     @image = Image.new(params[:id]) 
     if @image.save 
      flash[:notice] = "Successfully added image!" 
      redirect_to [:admin, :albums, :image_name] 
     else 
      render :action => 'new' 
     end 
    end 
    def show 
    end 
    def destroy 
     @image = Image.find(params[:id]) 
     @image.destroy 
     redirect_to admin_albums_path 
    end 
end 

路線

Admin::Application.routes.draw do 
    get "albums/index" 

    get "dashboard/index" 

    namespace :admin do 
    root :to => "dashboard#index" 
    resources :dashboard 
    resources :albums do 
     resources :images 
    end 
    get "admin/album" 
    end 
    get "logout" => "sessions#destroy", :as => "logout" 
    get "login" => "sessions#new", :as => "login" 
    get "signup" => "users#new", :as => "signup" 
    # resources :users 
    resources :basic 
    root :to => "basic#index" 

圖像米奧德爾

class Image < ActiveRecord::Base 
    attr_accessible :title, :description, :image_name 
    has_and_belongs_to_many :albums 
end 

相冊樣板

class Album < ActiveRecord::Base 
    attr_accessible :title, :description 
    has_and_belongs_to_many :images, :dependent => :destroy 
    validates :title, :description, :presence => true 
end 
+0

嵌套資源不工作正常的資源,來看看:http://guides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects – Pigueiras 2013-03-11 19:16:36

回答

1

您需要更改admin_album_images_path,因爲你需要同時指定資源的嵌套資源。

<%= button_to "Delete", admin_album_images_path(image.album,image), :method => :delete, :style => "display: block;" %> 
+0

這導致'沒有路線匹配{:format =>#<圖像ID:1,標題:nil,描述:nil,image_name:nil,日期:nil,album_id:nil>,::controller =>「admin/images」,:album_id = > nil}' – 2013-03-11 23:03:07

+0

它看起來像你的關聯是錯誤的 - 你可能想在你的'Image'模型上擁有'belongs_to:album'而不是'has_and_belongs_to_many',然後將'Album'上的'has_and_belongs_to_many'改爲'has_many :圖像,依賴於:destroy' – Mikey 2013-03-12 10:19:15