Rails反馈表单:如何获取当前页面的URL?

Rails feedback form: How to get the url for the current page?

我正在使用DavidFrancisco的Rails反馈插件。这个插件工作得很好,除了一件事——我需要反馈表单向数据库提交反馈表单所在页面的URL。有人知道怎么做吗?

除了当前发送的信息之外,还需要发送当前URL的视图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<h4>Feedback</h4>
<p>
Please leave us feedback, it's really appreciated.
</p>

<%= form_for @feedback, :as => :feedback, :url => feedback_index_path, :html => { :id =>"feedback_form" } do |f| -%>
  <%= f.hidden_field 'user_id', :value => current_user.id %>
  <% unless @error_message.blank? %>
  <p class="error">
    <%=h @error_message %>
 
</p>
  <% end %>
  <p>

    <%= f.label 'subject' %>
    <%= f.select 'subject', ['Problem', 'Suggestion', 'Question', 'Other'] %>
 
</p>
  <p>

    <%= f.label 'comment' %><br />
    <%= f.text_area 'comment', :rows => 10, :cols => 30 %>
 
</p>
  <p>
<%= f.submit 'Send' %>
</p>
<% end -%>

目前,反馈索引路径始终是表单的URL。

谢谢您,亚历山德拉


您可以在控制器中使用request.referer来获取调用您的操作的页面的路径。request.referer返回完整的URL,但您可以使用URI模块对其进行分析:

1
URI(request.referer).path

我看到有些人建议使用request.fullpath,但这实际上是处理请求的操作路径(在您的情况下是/feedbacks/new),而不是表单提交的路径。


如果request.fullpath不能正常工作,您可以进行快速黑客攻击,将页面URL存储在页面的数据属性中,并在提交时通过jquery从该属性中获取当前URL。但这是一个黑客,只是为了让它工作。

顺便问一下,你如何呈现反馈表?


feedback_index_path是一个路由助手方法,它总是返回相同的内容。在你的情况下,是/feedback

在这里查看有关访问Rails2和3中当前URL的信息。