0

つまり、基本的に「products /:product」に一致するルートを設定しました。これは、baseurl / products / toasterのようなページに応答し、トースター製品を表示するようです。私の問題は、link_toを使用してこのパスを生成できないように見えることです。つまり、方法がわかりません。これについて何か助けはありますか?

4

2 に答える 2

3

これにはいくつかの解決策があります:

<%= link_to 'Toaster', { :controller => 'products', :action => 'whatever', :product => 'toaster' } %>

:as => :productしかし、それは実際にはRails Wayではありません。そのため、ルートの最後に追加する必要があります。product_pathこれにより、このように使用できるヘルパーが作成されます。

<%= link_to 'Toaster', product_path(:product => 'toaster') %>
于 2012-12-31T22:44:53.060 に答える
2

ルートファイル内で、次のようなことができます。

match "products/:product" => "products#show", :as => :product

ProductsControllerコントローラがあり、ビューがどこにあるかshow

あなたが持っている製品コントローラー内

  def show
    @product = Hub.find_by_name(params[:product])

    respond_to do |format|
      format.html # show.html.erb
    end
  end

products / :productセクションにあるものはすべて、paramsを介して利用できます。

次に、ルートで使用したので、これを次:asのように実行できます。link_to

<%= link_to product(@product) %>

@product製品または文字列のインスタンスはどこにありますか。これは単なる例であり、パラメータは任意のものにすることができます。同じことがコントローラ/アクションにも当てはまります。詳細については、こちらをご覧ください

お役に立てれば!

于 2012-12-31T22:43:08.453 に答える