ROR Application Development Tips

I'm Ruby on Rails developer. I love to share my experience, technical knowledge. I work at Crypex Technologies which is developing applications in ROR for more than a decade.

How to make Search Engine Friendly url in Ruby On Rails?

FreindlyId gem is used to make friendly looking URLs i.e it lets us replace id’s in the URL with the string. It also prevents hacking of the web-page since the id gets hidden by the slug. Before friendly_id:
After friendly_id :

Here are the simple steps to follow:
Step 1: Add gem “friendly_id” to the Gemfile and run “bundle install” on terminal.
A] On an existing application :
Step 2: Run “rails g migration AddSlugToJobs”.
In this case, “slug” is the column name which is adding into existing “jobs” table.
Slug : Slug is the part of the URL. It is the slug which makes the URL user friendly.
Slug rules states that the string in the URL is separated by dash (-). Its rule also states that the letters in the URL are in lowercase.

Step 3: Add the following code to the migration file :

In my application,I have migration file “20180109135747_add_slug_to_jobs.rb” in “db/migrate/20180109135747_add_slug_to_jobs.rb”. In this step I am adding a column name “slug” to the existing table “jobs” and indexing it. In your case, you can add the code to your migration file and replace “:jobs” with your table name.
Step 4: Run “rake db:migrate
Step 5: Add the following code to the model :

In my case, I have added the code in “job.rb” file which is in “app/models/job.rb”. In your case, add the code in your model’s file. In this step, I am extending “FriendlyId” module and using “friendly_id” method with the column name to tell rails which column to be used as a slug.
Step 6: Edit the show action of the controller:

In my application, I have controller “jobs_controller.rb” in app/controllers/jobs_controller.rb. In your case add the following code to the show action of your controller.
Now the friendly_id will be applied to the new records which you create but in order to add friendly_id to the previous records which was created before adding friendly_id gem, follow the next step.
Step 7: run “rails c” enter and run :
Job.find_each(&:save)
Now your application is ready with a functionality of friendly_id. When you will create new record, it’s id in the URL will gets replaced with the slug. In my case , here is my output.

B] On a new project :
Step 2: Run  “rails generate controller Posts index new show destroy ”
Run  “rails generate model Post title:string slug:string body:text ”
Step 3: Add the following line to the migration file :
add_index :posts, :slug, unique: true

In my case, I have added the line in “20180130104525_create_posts.rb” file which is in “db/migrate/20180130104525_create_posts.rb”. Basically, I am adding the index to the “slug” column. In your case add this line in your file in “db/” and replace “:posts” with your table name.
Step 4: Run “rake db:migrate”
Step 5: Add the following code to the model

In my case, I have added the code in “post.rb” file which is in “app/models/post.rb”. In your case add the code in your model’s file. In this step, I am extending “FriendlyId” module and using “friendly_id” method with the column name to tell rails which column to be used as a slug.
Step 6: Edit the show action in the controller.

In my case, I have edited the show action in “post_controller.rb” which is in “app/controllers/post_controller.rb”. In your case edit the show action in your controller.
Now your newly created application is ready with the functionality of friendly_id.

Source: http://www.cryptextechnologies.com/blogs/how-to-make-friendly-url-using-friendly_id-gem

今週のお題「表彰状」