0

私はいくつかのリンクを持っています:

<%= link_to "", '../captures#photos' %>
<%= link_to "", '../captures#videos' %>
<%= link_to "", '../captures#audios' %>

それらはcaptures_controller.rbに渡されます

コントローラーでインデックスに登録されないようにパラメーター(写真/ビデオ/オーディオ)を解析するにはどうすればよいですか?

現在、コントローラーには次のものがあります。

def photos
  logger.debug 'photos'
end
def videos
  logger.debug 'videos'
end
def audios
  logger.debug 'audios'
end

def index
  logger.debug 'index'
end

しかし、次のすべてのURLは「インデックス」を記録しますか?

  • .../キャプチャ
  • ... / captions#photos
  • ... / captions#videos
  • ... / captions#audios

ルート.rb:

# these were when I was trying the links without the hashes
match 'captures/photos' => 'captures#photos'
match 'captures/videos' => 'captures#videos'
match 'captures/audios' => 'captures#audios'

resources :captures
resources :photos
resources :audios
resources :videos
4

4 に答える 4

0

これは、ファイルで定義されているルートに大きく依存しますが、ルートの一部としてroutes.rbハッシュ部分(の後に続くもの#)を使用することはできません。実際、ブラウザはとにかくそれをサーバーに送信することさえしません。ほとんどの場合、URLを次のように表示する必要があります。

../captures
../captures/photos
../captures/videos
../captures/audios

link_to通常、このような関数でもURLを指定しないのが最善です。ルートが変更された場合に備えて、ルーティングヘルパー関数を使用してそれらを提供する必要があります。

RubyonRailsガイドのルートを読むことをお勧めします。これにより、Railsに組み込まれている関数を使用して、ルートを最大限に活用する方法について多くの洞察が得られます。

于 2013-01-22T03:26:55.347 に答える
0

Routes.rb

get "/captures/:format"

そして、どのcaptures_controller.rbメソッドでも、次の場所で必要になります。

@format = params[:format]

次に、関連するビューの任意の場所で、、、またはのいずれ@formatかが出力されます。photosvideosaudios

于 2013-01-22T03:27:03.587 に答える
0

controller#actionの表記は使いませんlink_to。パスを/captures/photos指定するか、いくつかの引数を明示的に指定する必要があります。これを試して:

<%= link_to "", :controller => "captures", :action => "photos" %>

簡単にするために、routes.rbでもこれを行います。

resources :captures
  get :photos
  get :photo_booths
  get :videos
  get :audios
end

これにより、これが可能になります:

<%= link_to "", photos_captures_path %>

最後に、あなたが私たちに示した限られたコードに純粋に基づいて、名前空間として「キャプチャ」を使用し、タイプごとに個別のコントローラーを作成することにより、それぞれ独自のコントローラーを持つ、、などの名前のリソースが必要であるように実際に聞こえます。photosaudios

namespace :captures do
  resources :photos
  resources :photo_booths
  #etc
end

次に、それぞれindexに、コントローラー内の各メソッドの現在の機能を提供するアクションがあります。次に、リンクは次のようになります。

<%= link_to "", captures_photos_path %>
于 2013-01-22T03:44:18.420 に答える