我正在与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',即表单的网址。
谢谢你, 珊
答案 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你如何呈现反馈表?