2011-12-19 93 views
0

这是我的第一个rails项目和第一个rails帖子,所以我可能无法表达自己。我环顾四周,但无法找到我认为简单的答案。Ruby on Rails:button_to使用绝对路径,但我需要相对的

问题是我有一个Rails应用程序向用户呈现一个按钮,并且表单操作具有以http://开头的完整路径,即使用户使用SSL,所以如果他们单击按钮他们看到数据未被加密的愚蠢警告。我想表单动作网址开头为/ ......下面是生成按钮的代码(HAML):

%li= button_to "Pay by Mail", mail_in_payment_new_org_contact_student_application_app_fee_payment_url(@org, current_user.contact, current_application), :method => "get" 

不幸的是,我跳进一个项目,与我是陌生的语言,我以前从未见过HAML。我完全不了解这个资源:mail_in_payment_new_org_contact_student_application_app_fee_payment,也不了解rails如何根据它生成URL。

任何信息将非常有帮助。

非常感谢。

回答

3

使用

mail_in_payment_new_org_contact_student_application_app_fee_payment_path

代替

mail_in_payment_new_org_contact_student_application_app_fee_payment_url

总之,_url助手是绝对的,_path是相对的。你可以阅读关于他们here。如果你发布了config/routes.rb的内容,那么我会试着解释一下这个辅助方法是由什么组成的。

1
mail_in_payment_new_org_contact_student_application_app_fee_payment_url(@org, current_user.contact, current_application) 

是一个Rails助手,可以生成完整的url。如果你想“URL”

mail_in_payment_new_org_contact_student_application_app_fee_payment_path(@org, current_user.contact, current_application) 

的相对URL中使用“路径” unstead正在发生的事情的细节是深埋,但它是根据你的config/routes.rb中文件。