Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails empty methods in controllers

I would like to ask if i should keep the empty methods in my controller (Its a question about code style):

before_action :set_project, only: [:show,:new]

  def show
  end

  def new
  end

Should i keep it like this or simpy remove show and new action

class ProjectController < ApplicationController
before_action :set_project

def index
#indexaction
end

def create
#createaction
end

is it more Railish way? Rails Styleguide doesnt indicate any sollution to it, only that:

def show
end

is better than

def show; end
like image 433
Hoggie Avatar asked Dec 24 '22 09:12

Hoggie


1 Answers

If you're not defining any data in those methods, you can remove them.


Rendering By Default:

Rails automatically infers the view from action names in routes.

If you're not defining data (only to be done in the controller), you'll can rely on the view being loaded without the action being present:

You've heard that Rails promotes "convention over configuration". Default rendering is an excellent example of this. By default, controllers in Rails automatically render views with names that correspond to valid routes. For example, if you have this code in your BooksController class:

class BooksController < ApplicationController
end

And the following in your routes file:

resources :books

And you have a view file app/views/books/index.html.erb:

<h1>Books are coming soon!</h1>

Rails will automatically render app/views/books/index.html.erb when you navigate to /books and you will see "Books are coming soon!" on your screen.

Good ref: Rails doesn't need index method in controller defined?

like image 138
Richard Peck Avatar answered Dec 26 '22 23:12

Richard Peck