Rails控制器中的空方法

Hog*_*gie 4 ruby-on-rails

我想问一下我是否应该在我的控制器中保留空方法(这是一个关于代码风格的问题):

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

  def show
  end

  def new
  end
Run Code Online (Sandbox Code Playgroud)

我应该保持这样或简单地删除节目和新动作

class ProjectController < ApplicationController
before_action :set_project

def index
#indexaction
end

def create
#createaction
end
Run Code Online (Sandbox Code Playgroud)

是否更加偏执?Rails Styleguide并不表示任何溶剂,只有:

def show
end
Run Code Online (Sandbox Code Playgroud)

比...更好

def show; end
Run Code Online (Sandbox Code Playgroud)

Ric*_*eck 5

如果您没有在这些方法中定义任何数据,则可以将其删除.


默认渲染:

Rails自动从路由中的动作名称推断出视图.

如果您没有定义数据(仅在控制器中完成),您可以依赖于view加载而不执行操作:

你听说过Rails提升了"约定优于配置".默认渲染就是一个很好的例子.默认情况下,Rails中的控制器自动呈现具有与有效路由对应的名称的视图.例如,如果您的BooksController班级中有此代码:

class BooksController < ApplicationController
end
Run Code Online (Sandbox Code Playgroud)

以及您的路线文件中的以下内容:

resources :books
Run Code Online (Sandbox Code Playgroud)

你有一个视图文件app/views/books/index.html.erb:

<h1>Books are coming soon!</h1>
Run Code Online (Sandbox Code Playgroud)

app/views/books/index.html.erb当你导航到/ books时,Rails会自动渲染,你会看到"书籍即将推出!" 在你的屏幕上.

好的参考:Rails不需要控制器定义的索引方法吗?


Sra*_*van 3

如果您想将来使用这些方法,请保留这些方法,否则将其删除。即使保留也不会有任何问题。

如果创建了这些方法并且您不想使用它们,也请删除这些方法的路由。代码应该尽可能简单。