0

アプリをルーティングしようとして完全に混乱しています。たくさんのイベントがあり、それぞれにフォト ギャラリーが必要です。

ただし、すべてを同じ EVENT コントローラー内に保持したいと思います (ところで、別の質問 - それはどれほど合理的ですか?)。そのため、ユーザーは [イベントの編集] ページに移動し、左側にリンク付きのメニューを表示できます。そのうちの 1 つが自分のギャラリーになります。

だから私はこれを私のイベントコントローラに追加しました:

def gallery
  @event = Event.find(params[:id])
end

URI は次のようになります (推測しますか?): site/event/777/gallery/edit

どうすればそれをルーティングできますか? _path はどうなるでしょうか。

助けてくれてありがとう

4

2 に答える 2

2

これを行う正当な理由は思いつきません。別のファイルを作成するのは簡単です。通常の show/edit/update/etc メソッドを備えた GalleriesController を用意してください。

あなたのルートで:

resources :events do
  resources :galleries

gallery_controller.rb:

class GalleriesController < ApplicationController

  # GET /events/1/galleries/1/edit
  def edit
    @event = Event.find(params[:event_id])
    @gallery = @event.galleries.find(params[:id])
  end

end
于 2013-08-22T16:06:12.743 に答える
1

あなたの次の構成は、あなたconfig/routes.rbが望むものを与えるはずです:

resources :events do 
  resources :galleries
end

そして、これはあなたに与えるでしょうevent_galleries_path。そして、これはあなたに与えるでしょうevent_galleries_path。以下は、上記の構成が提供する 7 つのパスです。

      event_galleries GET    /events/:event_id/galleries(.:format)              galleries#index
                      POST   /events/:event_id/galleries(.:format)              galleries#create
    new_event_gallery GET    /events/:event_id/galleries/new(.:format)          galleries#new
   edit_event_gallery GET    /events/:event_id/galleries/:id/edit(.:format)     galleries#edit
        event_gallery GET    /events/:event_id/galleries/:id(.:format)          galleries#show
                      PUT    /events/:event_id/galleries/:id(.:format)          galleries#update
                      DELETE /events/:event_id/galleries/:id(.:format)          galleries#destroy

名前付きルートの編集は次のとおりedit_event_gallery_pathです。

gallery次に、 にメソッドを追加する代わりに、およびその他のアクションを にEventsController作成します。editshowGalleriesController

# /events/:event_id/galleries/:id/edit
def edit
  @gallery = Gallery.find(params[:id])
end

# /events/:event_id/galleries/:id
def show 
  @event = Event.find(params[:event_id])

  # And your galleries, something like this
  @galleries = @event.galleries.find(params[:id])
end
于 2013-08-22T16:05:44.443 に答える