Форма обратной связи Rails: Как получить URL для текущей страницы?
Я работаю с плагином обратной связи Дэвида Франциско. Плагин работает отлично, за исключением одного - мне понадобится форма обратной связи для отправки в базу данных URL-адреса страницы, на которой была использована форма обратной связи. Кто-нибудь знает как это сделать?
Представление, которое должно было бы отправить текущий 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", URL-адрес формы.
Спасибо Александра
3 ответа
Ты можешь использовать request.referer
в вашем контроллере, чтобы получить путь к странице, которая вызвала ваше действие. request.referer возвращает полный URL, но вы можете разобрать его с помощью URI
модуль:
URI(request.referer).path
Я вижу, что некоторые люди предложили request.fullpath
но это на самом деле путь действия, которое обрабатывает запрос (в вашем случае /feedbacks/new
), а не путь, откуда форма была отправлена.
Если request.fullpath не работает неправильно, вы можете быстро взломать, сохраняя URL страницы в атрибутах данных страницы, и при отправке получить текущий URL с помощью jQuery из этих атрибутов. Но это хак, просто чтобы заставить его работать.
Кстати, как вы предоставляете форму обратной связи?
feedback_index_path
является вспомогательным методом маршрутов, который всегда возвращает одно и то же. В твоем случае /feedback
,
Посмотрите здесь информацию о доступе к текущему URL в Rails 2 и 3.