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