控制器

时间:2016-02-12 09:03:44

标签: ruby-on-rails

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

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

  def show
  end

  def new
  end

我应该像这样保留它还是简单地删除节目和新动作

class ProjectController < ApplicationController
before_action :set_project

def index
#indexaction
end

def create
#createaction
end

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

def show
end

优于

def show; end

3 个答案:

答案 0 :(得分:5)

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

Rendering By Default:

Rails会自动从路线中的动作名称推断出视图。

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

  

您已经听说过Rails推广&#34;约定优于配置&#34;。默认渲染就是一个很好的例子。默认情况下, Rails中的控制器会自动呈现名称与有效路径对应的视图。例如,如果您的BooksController类中包含此代码:

class BooksController < ApplicationController
end
     

以下路线文件:

resources :books
     

您有一个查看文件app/views/books/index.html.erb

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

当您导航到/ books时,Rails会自动呈现app/views/books/index.html.erb,您会看到&#34;图书即将推出!&#34;在你的屏幕上。

好参考:Rails doesn't need index method in controller defined?

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

如果真的关于风格首先保留你的评论,那么如果你运行rdoc或生成文档,他们会在def show之前发表任何评论并使用它来构建在描述这种方法&#34;&#34;。

的段落中

实施例


class ProjectController < ApplicationController
before_action :set_project


#indexaction is awesome and will be used to do stuff like look at all the projects
def index
end

# will hopefully create your project
def create
end

是的,但如果没有使用,请不要保留......

如果没有使用路线,请不要让它们四处闲逛。默认情况下,您会收到blah.com/projects/1.json这样的内容,如果您还没有将其锁定(或者即使您有用户在应用内),他们也可以轻松获取json结果,假设您将所有内容保留在那里后来。如果你有一个before_filter来做什么&#39;那就更别说了。加载项目。

将其提交到git中然后将其删除并再次提交。如果你需要恢复它,至少github / bitbucket历史或git历史,如果你是虐待狂,将有它复制和粘贴。