Ruby on rails RubyonRails。链接到dons';不要提出例外

Ruby on rails RubyonRails。链接到dons';不要提出例外,ruby-on-rails,helpers,Ruby On Rails,Helpers,如果我向link_to方法传递一个与任何资源都不相关的实例变量(并且等于nil),为什么Rails会在锚元素的href属性中创建当前页面的路径,而不是引发异常 下面是一个例子: 路线 # app/config/routes.rb Example::Application.routes.draw do resource :example end HAML -# app/views/examples/show.html.haml %div = link_to 'Non-existent r

如果我向
link_to
方法传递一个与任何资源都不相关的实例变量(并且等于
nil
),为什么Rails会在锚元素的
href
属性中创建当前页面的路径,而不是引发异常

下面是一个例子:

路线

# app/config/routes.rb
Example::Application.routes.draw do
  resource :example
end
HAML

-# app/views/examples/show.html.haml
%div
  = link_to 'Non-existent resource', @ne_resource
<!-- http://localhost/example -->
<div>
  <a href="/example">Non-existent resource</a>
HTML

-# app/views/examples/show.html.haml
%div
  = link_to 'Non-existent resource', @ne_resource
<!-- http://localhost/example -->
<div>
  <a href="/example">Non-existent resource</a>

谢谢

Debian GNU/Linux 6.0.1

Ruby 1.9.2

RubyonRails 3.0.6。

如果您查看它使用该方法链接到url的方法

从上面可以看出,url_for在没有选项或使用nilClass的情况下是有效的,它不是为引发异常而设计的。如果您想在使用link\u to时出错,请确保使用动态“path”助手方法,在上述情况下,请使用new\u example\u path。

如果您查看它使用该方法链接到url的方法

从上面可以看出,url_for在没有选项或使用nilClass的情况下是有效的,它不是为引发异常而设计的。如果您想在使用link\u-to时出错,那么请确保使用动态“path”助手方法,在上面的例子中是new\u-example\u-path。

我向DHH(Rails的创建者)询问了一个与link\u-to在传递
nil,nil
参数时的行为密切相关的问题。我希望它根本不会呈现标签,而不是在调用它之前让我检查nils。他亲切地回答说:

这个答案的实质适用于你的问题。当给它一个
nil
时,它需要做一些事情。Gazler指出了技术上正在发生的事情,但DHH的回答显示了更高层次的“为什么?”方法的
url_可以接受一个nil参数,而当前页面是一个合理的默认值









我向DHH(Rails的创建者)询问了一个与link_to在传递
nil,nil
参数时的行为密切相关的问题。我希望它根本不会呈现标签,而不是在调用它之前让我检查nils。他亲切地回答说:

这个答案的实质适用于你的问题。当给它一个
nil
时,它需要做一些事情。Gazler指出了技术上正在发生的事情,但DHH的回答显示了更高层次的“为什么?”
方法的
url_可以接受一个nil参数,而当前页面是一个合理的默认值