【问题标题】:Is there a new syntax for `url_for` in rails 3?rails 3 中的 `url_for` 有新语法吗?
【发布时间】:2010-09-07 14:15:36
【问题描述】:

在插件助手中,我有:

include Rails.application.routes.url_helpers
url_for(:only_path => true, :controller => 'people', :action => 'new')

请注意,使用新的包含语法,该部分工作正常。但我得到一个错误:

undefined local variable or method `controller' for #<ActionView::Helpers::InstanceTag:0x311ddf4>

有没有一种新的方法来指定这个,比如 'controller#action' ?关键是什么?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    url_for 应该像往常一样工作,请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-url_for

    我在控制台上检查了它:

    ruby-1.9.2-head > include Rails.application.routes.url_helpers
     => Object 
    
    ruby-1.9.2-head > url_for(:only_path => true, :controller => 'admin/providers', :action 
    => 'new')
    
    => "/admin/providers/new" 
    

    也许错误不会出现在 url_for 中,因为您的错误消息显示 ActionView::Helpers::InstanceTag 这听起来像是您正在使用某种标签,例如 link_to 等。您考虑过这个吗?

    最好的问候

    西蒙

    【讨论】:

    • 是的,我在表单助手中,在实例标签中...我必须创建一个私有方法: def controller ; @控制器 ;结束
    • 我不明白为什么 ruby​​ 说你试图访问一个名为控制器的变量/方法。因为在你的 sn-p 中唯一出现的“控制器”这个词是一个符号。
    • url_for 在内部调用控制器类的方法。对于视图插件来说,它不知道要调用什么控制器,所以我不得不设置一个私有函数来设置它。
    猜你喜欢
    • 1970-01-01
    • 2011-03-30
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多