j'ai une ressource qui ressemble à ceci:Rails 4 select_tag avec des ressources imbriquées
resources :teams do
[...]
get 'tags/:tag', to: "teams#show", as: :tag
end
Chaque Team
peut avoir plusieurs Posts
qui lui est tour peut avoir plusieurs Tags
. Dans mes équipes montrent vue je veux afficher un select_tag
qui répertorie tous les tags pour Posts
. Lorsque l'utilisateur sélectionne un tag, je souhaite le rediriger et lister tous les articles de ce tag. Je vais aller travailler, mais pas avec ma ressource imbriquée et le URLs
que je veux. Ma mise en œuvre ressemble actuellement à ceci (j'utilise HAML
):
/ View
= form_tag team_path(@team), method: 'get', class: 'tag_form' do
.input-group
= select_tag "tag", options_from_collection_for_select(@team_tags, 'id', 'name', params[:tag]), prompt: "All tags", class: 'chosen-select'
# Controller
def show
@team_tags = @team.posts.tag_counts_on(:tags)
if params[:tag] && !params[:tag].blank?
tag = Tag.find(params[:tag])
@posts = @team.posts.tagged_with(tag.name)
else
@posts = @team.posts
end
end
Cela fonctionne, mais me donne une url qui ressemble à ceci:
teams/1?utf8=✓&tag=1
Ce que je veux est:
teams/1/tags/tag-name
Est-ce possible, et à quoi cela ressemblerait-il?
c'est un problème de routage: [lire] (http : //guides.rubyonrails.org/routing.html) – dax
Merci, je pense que les routes sont correctes. Dans un autre endroit, j'utilise 'link_to' pour rediriger les utilisateurs vers' teams/1/tags/tag-name', ce qui fonctionne. Mais je ne suis pas sûr de savoir comment le faire avec mon 'select_tag'. – Anders
ah, d'accord! mon erreur :) – dax