1

コントローラーで、クリックのみをカウントする、つまりそれ以外は何もしない「続きを読む」リンクのメソッドを作成しようとしています。私は印象派の宝石を使用してインプレッションをカウントしていますが、これはすべて問題なくダンディですが、「続きを読む」リンクのクリック数をカウントしたいのですが、「続きを読む」リンクは jQuery のみであるため、他のコントローラーメソッドはありません。彼らのために。

これは私がこれまでに得たものです。ページを離れたりリロードしたりせずにクリック結果を送信するだけです。

def read_more(a)
  @article = Article(a)
  impressionist(a)
end

リンクをクリックすると、次のエラーが表示されます。

ActiveRecord::RecordNotFound (Couldn't find Doc with id=19)

Article19 の ID で検索する必要がある場合。

どんな考えも大きな助けになるでしょう。乾杯!

4

4 に答える 4

1

次の方法で任意のテキストをレンダリングできます。

render(:text => @document.number_of_impressions) and return

しかし、私はおそらくそれをいくつかのJSONでラップし、それを返します:

data = {:impressions => 74}
render(:json => data) and return

JSONを使用すると、必要に応じて、後でさらにデータを返すことができます。

于 2012-12-14T00:32:47.117 に答える
0

追加

@document.increment!(:number_of_impressions)

あなたのコントローラーに。

値をインクリメントするときにドキュメントを保存したくない場合は、の強打を削除するだけincrementです。

于 2012-12-14T00:46:45.660 に答える
0

試す

render :nothing => true
于 2012-12-14T00:49:05.487 に答える
0

他の誰かが同様の問題に遭遇した場合、私は答えを見つけました。

def read_more
  @article = Article.find(params[:id])
  impressionist(@article)
  render :json => "Read."
end

どうやら、コントローラーメソッドに引数を含めることはできません。

于 2012-12-17T01:56:16.690 に答える