如何在Rails 5控制器中注释多行代码?

3

我正在尝试在Rails 5控制器中注释多行代码,我在网上搜索并找到了以下解决方案:"=begin"

=begin (Multiple lines)
      respond_to do |format|
       if @person.update_attributes(params[:person])
        flash[:notice] = 'Person was successfully updated.'
        format.html { redirect_to(@person) }
        format.xml { head :ok }
       else
        format.html { render :action => "edit" }
        format.xml { render :xml => @person.errors, :status => :unprocessable_entity }
       end
      end
=end

但是它给出了以下错误:

语法错误,意外的"=" =begin

我正在使用Rails 5.0。

4个回答

7

当一行代码以=begin开始时,在该行开头和=begin之间不能有空格。这同样适用于=end。请确保该行以=begin开始:

以下写法是正确的:

=begin
  foo
  bar
=end

这样做是行不通的:
  =begin
    foo
    bar
  =end

2

=begin=end之前不能有任何空格。

=begin
  code 
  I 
  want
  to 
  comment
=end

这类似于在每行代码前加上注释符#
# code 
# I 
# want
# to 
# comment

1

=begin 和 =end 应该与类的缩进级别相同。格式如下:

class MyController < ApplicationController
=begin
=end
end

1
这不太正确。无论是否在类的代码内,注释符号的 = 必须是行中的第一个符号。 - Nic Nilov
我同意Nic Nilov的观点,尽管Sven Koschnicke解释得更好。 - Amrinder Singh

1
除了其他答案之外,Ruby中的多行注释语法虽然存在,但几乎不被使用。一些编辑器和语法高亮工具甚至无法识别它。最好的选择是在每个注释行上使用#
使用#的另一个好处是可以嵌套注释,这是使用=begin ... =end语法无法实现的。
respond_to do |format|
  if @person.update_attributes(params[:person])
    #  top level commented block
    #  flash[:notice] = 'Person was successfully updated.'
    #  # second level commented block
    #  # format.html { redirect_to(@person) }
    #  # format.xml { head :ok }
    # ...
  end
end

您的IDE应该没有问题一次注释/取消注释单个注释级别。
有关讨论,请参见此SO问题

嗯,但是如果我们处理的是大量代码,那么每一行都注释可能不是一个好主意,会浪费很多时间。 - Amrinder Singh
你应该使用IDE的工具,而不是手动输入每个符号。几乎所有地方都提供了多行注释快捷方式。 - Nic Nilov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接