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

时间:2012-09-20 02:51:08

标签: ruby-on-rails ruby-on-rails-3 forms feedback user-feedback

我正在与David Francisco的rails feedback plugin合作。该插件工作正常,除了一件事 - 我需要反馈表单向数据库提交使用反馈表单的页面的URL。有谁知道怎么做?

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

<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 -%>

目前,feedback_index_path始终是'/ feedback',即表单的网址。

谢谢你, 珊

3 个答案:

答案 0 :(得分:6)

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

URI(request.referer).path

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

答案 1 :(得分:1)

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

Look here for info on accessing the current URL in both Rails 2 and 3.

答案 2 :(得分:1)

如果request.fullpath不能正常工作,你可以快速破解,将页面url存储在页面的数据属性中,然后通过jQuery从该属性提交获取当前url。 但它是一个黑客,只是为了使它工作。

BTW你如何呈现反馈表?