2016-09-01 4 views
-1

ich SEO-freundliche URLs auf einer Reise-Website machen wollen, die nicht nur das Hotel enthalten, sondern auch die Lage als solche:Namen belongs_to Modellobjekt in URL Ruby-on-Rails mit

www.domain.com/Name/Ziel-Name/Hotel-Name

Ich habe viele Beispiele gefunden, um hübsche URLs für den Hotelnamen zu erstellen (mit to_param) und frage mich, wie es implementiert werden könnte, um die Modellkette hinauf zu gehen.

Antwort

0

Bitte folgen Sie dem untenstehenden Code.

config/routes.rb

get ':country_name/:destination_name/:hotel_name', to: 'hotels#show' 

app/controllers/hotels_controller.rb

class HotelsController < ApplicationController 
    before_action :set_hotel, only: [:show] 
    def index 
     @hotels = Hotel.all 
    end 
    def show 
    end 
    private 
     def set_hotel 
      @hotel = Hotel.find(params[:id]) 
     end 
end 

app/views/Hotels/index.html.erb

<% @hotels.each do |hotel| %> 
    <%= hotel.name %> 
    <% country = hotel.country.downcase.gsub(" ","-") %> 
    <% destination_name = hotel.destination_name.downcase.gsub(" ","-") %> 
    <% hotel_name = hotel.name.downcase.gsub(" ","-") %> 
    <% @url = "#{country}/#{destination_name}/#{hotel_name}?id=#{hotel.id}" %> 
    <td><%= link_to 'Show', @url %></td> 
<% end %> 
+0

Schaut Prashant . Ich werde es versuchen. Vielen Dank! – Michael