5

私はDavidFranciscoのrailsフィードバックプラグインを使用しています。プラグインは正常に機能しますが、1つだけ例外があります。フィードバックフォームが使用されたページの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は常にフォームのURLである「/feedback」です。

ありがとう、アレクサンドラ

4

3 に答える 3

6

コントローラで使用request.refererして、アクションを呼び出したページのパスを取得できます。URIrequest.refererは完全なURLを返しますが、モジュールで解析できます。

URI(request.referer).path

一部の人が提案しているようrequest.fullpathですが、これは実際にはリクエストを処理しているアクションのパス(あなたの場合/feedbacks/new)であり、フォームが送信されたパスではありません。

于 2012-09-20T19:04:38.953 に答える
1

feedback_index_pathは常に同じものを返すルートヘルパーメソッドです。あなたの場合/feedback

Rails 2と3の両方で現在のURLにアクセスする方法については、こちらをご覧ください。

于 2012-09-20T03:03:07.243 に答える
1

request.fullpathが正しく機能しない場合は、すばやくハックして、ページのURLをページのデータ属性に保存し、送信時にその属性からjQueryによって現在のURLを取得できます。しかし、それを機能させるためだけに、それはハックです。

ところで、フィードバックフォームをどのようにレンダリングしますか?

于 2012-09-20T18:58:25.893 に答える