【问题标题】:How to use url_helpers in rails 4.2?如何在 Rails 4.2 中使用 url_helpers?
【发布时间】:2015-08-27 19:04:47
【问题描述】:

我正在尝试为我的数据表建立一些链接,并在过去 4 小时里一直在努力解决它。

这是我当前的代码:

class UsersDatatable < TemplateDatatable
  def data
    users.map do |user|
      [
        user.id,
        user.nome,
        user.email,
        user.provider.camelize,
        links(user)
      ]
    end
  end

  def links(user)
    html = link_to url_helpers.edit_user_registration_path(user), class: "btn btn-mini btn-info", "data-rel" => "tooltip", title: "Editar", "data-placement" => "top" do
      content_tag(:i, '', class: "icon-edit")
    end.html_safe
  end
end

class TemplateDatatable
  include ActionView::Helpers::FormTagHelper
  include ActionView::Context

  delegate :params, to: :@view
  delegate :url_helpers, to: 'Rails.application.routes'
end

这是我不断收到的错误:

ArgumentError (arguments passed to url_for can't be handled. Please require routes or provide your own implementation)

我尝试从我的模型建立链接的每件事都不起作用。我在 github 上遇到了 rails 问题,但什么也没找到。

有什么帮助吗?

编辑:

我也尝试了提出的第一个解决方案,但仍然无法正常工作。我犯了同样的错误。这就是我所做的:

class User < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  def edit_registration_path
    edit_user_registration_path(self)
  end
end

def links(user)
  html = link_to user.edit_registration_path, class: "btn btn-mini btn-info", "data-rel" => "tooltip", title: "Editar", "data-placement" => "top" do
  content_tag(:i, '', class: "icon-edit")
end.html_safe

这不是在模型中添加 url 并调用它的简单事情。这与所说的重复不同。

【问题讨论】:

  • 不是。在 Rails 4.1 中,一切正常。 4.2 中发生了一些变化,没有文档,没有帮助,也没有关于这个错误的任何信息。我已经尝试了很多不同的事情和解决方案。我总是得到相同的 url_for 错误。
  • 您从 stackoverflow 粘贴的每个解决方案,我都已经尝试过了。我仍然遇到同样的错误。
  • 你贴的是一个注释说注释掉UrlHelper的包含。如果您阅读该问题,您会发现我没有将其包含在任何地方。在粘贴随机解决方案之前,请阅读整个问题。
  • 你在没有阅读的情况下对一个问题投了反对票,我一直都很有礼貌,并指出你在说它是重复的之前甚至没有阅读这个问题,现在你暗示你有一个答案我敢打赌你没有。如果你完成了,请去打扰别人。我真的很想从懂事的人那里得到帮助。
  • 即使在使用更新后的代码后,您是否得到相同的 ArgumentError?

标签: ruby-on-rails ruby-on-rails-4.2


【解决方案1】:

你需要在你的课程中加入这个:

class User < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  def base_uri
    user_path(self)
  end
end

User.find(1).base_uri # => "/users/1"

Check for refference:

【讨论】:

  • 我更新了我的问题。我已经尝试过了,但效果不佳。
  • 这就是答案。这正是您需要将 URL 助手放入模型中的内容。我使用它是 Rails 3 和 Rails 4(4.0.1、4.1.2 和 4.2.3)上的几个应用程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2014-02-14
  • 2016-09-06
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多