Je construis une application rails qui héberge des jeux. Les jeux appartiennent à des catégories et ainsi chaque catégorie peut avoir beaucoup de jeux.En utilisant la gemme Friendly ID avec Rails, comment régénérer le champ slug?
J'utilise la pierre précieuse Friendly_id pour générer les limaces URL et ont la configuration suivante:
Category.rb
class Category < ActiveRecord::Base
extend FriendlyId
friendly_id :name_and_games, use: [:slugged]
has_many :games
def name_and_games
"#{name}-games"
end
end
Games_Controller.rb
...
def category
@category = Category.friendly.find(params[:id])
@categories = Category.all
@games = @category.games.page(params[:page])
render 'games/index'
end
...
routes.rb
get ':friendly_id', to: "games#category", as: :category
Category_View.html.erb
<% categories.each do |category| %>
<%= link_to category_path(category) do %>
<span><%= pluralize(category.name.capitalize, "Game") %> (<%= category.games.count %>)</span>
<% end %>
<% end %>
Le problème est que lorsque j'utilise le module slugged de Friendly_id, Rails est la génération de mes urls sans le « -Jeux » suffixe si je me retrouve avec URLS comme celui-ci:
http://localhost:3000/action
http://localhost:3000/adventure
Y a-t-il un moyen d'avoir des «jeux» dans mes URL et de les faire bien jouer de sorte que les «jeux» soient supprimés au moment du traitement dans le modèle?
Merci.
On dirait que la gemme has_permalinks fait un meilleur travail de résoudre ce scénario que Friendly_id ne. Cependant, ce serait bien de travailler avec Friendly_id car il semble être l'option la mieux prise en charge et il a aussi un peu plus de fonctionnalités que j'aimerais exploiter. – dnyce