1

ページビューを記録するために印象派の宝石を使用しています。
質問モデルと回答モデルがあるとしましょう。

question.rb:

class Question< ActiveRecord::Base
  has_many :answers
  is_impressionable

answer.rb:

class Answer< ActiveRecord::Base
  belongs_to :question
  is_impressionable

questions \ show.html.erbに、回答のリストがあります。
ユーザーが回答にカーソルを合わせると、2つのリンクが表示されます。詳細とに移動します。
詳細リンクは、回答ショーページ(詳細を提供)を開くだけで、ショーの印象を記録し、正しく機能します。

Answers_controller.rb:

 impressionist(@answer)

ページに移動するのは難しいです。ユーザーがリンクをクリックすると、次のようになります。

 <%= link_to "Go to", :class => 'answer_link', :remote=>:true,
       :data=>{outval: answer.type_url, cuid: answer.id.to_s, refval: user_question_path(@question.user, @question), txtval: answer.img_url} do %>
            <span class="small_image">
               <%= image_tag(answer.img_url, :alt => 'go to answer', :class =>'img_answer')  %>
             </span>
  <% end %>

、次のjQueryスニペットを実行します。

 $('.answer_link').click (->
    url_val=''
    url_val = "http://api.somewebservice.com/api/click?key=abc123"
    url_val += "&out=" + $(this).data('outval')
    url_val += "&loc=" + $(this).data('refval')
    url_val += "&cuid=" + $(this).data('cuid')
    url_val += "&ref=" +  $(this).data('refval')
    url_val += "&txt=" +  $(this).data('txtval')
    window.open url_val
  )

これは正しく機能し、Webサービスを実行してから、返された外部リンクを新しいウィンドウで開きます。
私の問題は、この外部クリックをインプレッションとしてキャプチャしようとしていることです。
これを行うための最良の方法は何ですか?現在、外部リンクである質問コントローラーをクリックすると、アクションが実行されます。

特定の質問#1:これは私がどこにも行きたくないという点で正しいようです(別のウィンドウがすでに外部リンクで開いています)。質問コントローラーを使用してアクションを表示し、params [:id] == "Go to"の場合は、そのままにしておくのは正しいですか。

特定の質問#2:これが正しければ、印象派に:action_nameを送信する方法はありますか(「show」の現在送信されているデフォルトの代わりに「goto」を送信します:

特定の質問#3:それが正しくない場合、私は何をすべきですか?おそらく、Answersコントローラー、カスタム定義の「go_to」に行きますか?

TIA

4

1 に答える 1

0

OK-私には解決策があります(それが最良のものかどうかはわかりませんが、うまくいきます)

  1. 上からのquestion.rbとanswer.rbは同じままです
  2. 回答show.html.erbページのインプレッションをカウントするために、私はまだanswer_controllerで使用しています。

     impressionist(@answer)
    
  3. 回答からリダイレクトするときのインプレッションをカウントするために、answer_controllerに新しい定義を作成しました。

    def visit_external_site
      @answer= Answer.find(params[:answer_id])
      impressionist(@answer)
      respond_to do |format|
        format.html {render :nothing => true, :status => 200}
      end
    end
    

(私がよくわからない部分はformat.htmlです(私はどこにも行きたくないのですが、それでも....)

  1. 私のroutes.rbにはこれがあります:

    match '/:answer_id' => 'answers#visit_external_site', :as => 'visit_external_site'
    
    1. questions\show.html.erbページには次のようになりました。

 <% @question.answers.each do |answer| %>
  <%= link_to url_for(:controller => :answers, :action => :visit_external_site, :answer_id => answer),
                          :class => 'answer_link', :remote => true,
                          :data => {outval:
                                            answer.type_url, cuid: answer.id.to_s, refval:
                                            user_question_path(@question.user, @question), txtval:
                                            answer.img_url} do %>
                <span class="small_image">
                    <%= image_tag(answer.img_url, :alt => 'go to answer', :class => 'img_answer') %>
                </span>
              <% end %>
<% end %>
  1. 私のjQueryはまだ上記と同じです

誰かがこれを行うためのより良い方法を持っているなら、教えてください。この方法が「コーシャ」かどうかはわかりません

于 2013-03-29T15:47:18.517 に答える