向restful资源添加新操作

时间:2014-01-27 21:41:03

标签: ruby-on-rails hyperlink controller routes action

我需要为我的Photos控制器添加辅助节目动作。我把它命名为全屏。

我的展示操作会在页面中央显示一张照片,全屏动作将会占据整个页面并显示尽可能大的照片。

我如何在我的路由器中设置它以及在为Photo Show操作呈现的视图上的图像上的链接是什么?

只是想知道这一切是如何结合在一起的?

这是我的照片控制器:

class Gallery::PhotosController < Gallery::GalleryController

   def index
      @photos = Photo.all
   end

   def show
      @photo = Photo.find(params[:id])
      @album = Album.where(id: @photo.album_id).first
      @first_of_album = Photo.where(album_id: @album.id).first
      @last_of_album = Photo.where(album_id: @album.id).last

      respond_to do |format|
         format.html

         format.js
      end
   end

   def fullscreen
      @photo = Photo.find(params[:id])
      @album = Album.where(id: @photo.album_id).first
      @first_of_album = Photo.where(album_id: @album.id).first
      @last_of_album = Photo.where(album_id: @album.id).last
   end

end

和我的路由器:

   namespace :gallery do
      resources :collections, only: [:index, :show] do
         resources :albums, only: [:index, :show] do
            resources :photos, only: :show
         end
      end
   end

我认为我不能使用链接助手,因为Rails赢了;生成了一个没有适用的路由,但我不确定如何在路由器方面“探测”这个?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这样做:

resources :photos, only: :show do
  member do
    get :fullscreen
  end
end

Here is the relevant doc