编码的URL构造在Rails应用程序中失败

时间:2014-12-23 08:34:39

标签: ruby-on-rails

我有一个非常简单的问题。我想从一个对象构造一个编码的url。我有一个名为“邀请”的对象。 “邀请”有以下字段,“消息”,“日期”,“名称”。我想从这个对象构造一个以下编码的字符串。因此,当我使用此网址时,它会预先填写google mail的撰写表单。

https://mail.google.com/mail/u/0/?view=cm&fs=1&su=Party+on+date&body=%0Amessage%0Ahttp://localhost:3000/invitations/3%0Aname%0A&tf=1

我已经声明了一个帮助器,如下所示(假设返回一个编码的字符串,可以在视图中使用)。 ..

module ApplicationHelper

  def google_mail_encoded_url(invite)
    uri = URI.parse('https://mail.google.com/u/0/?')
    uri.query = URI.encode_www_form('view'=> "cm", 'fs' => "1", 'su' => "Party on " + invite.date, 'body' => "\nHi,\n" + invite.message + "\n" + invitations_url(invite))

    puts uri.to_s
  end
end

我试过跟踪rails控制台,

@invite = Invitations.where(:id => 10)
helper.google_mail_encoded_url(@invite) #just to see the output....

这失败了NameError:undefined局部变量或main:Object的方法`invitations_url'。这是调用和构造编码网址的正确方法吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

这是因为打开控制台时未加载路由。

为了能够使用它们,请在控制台中运行以下命令:

> include Rails.application.reload_routes!.first.url_helpers
 => Object 
> root_path
 => "/"