2011-12-30 2 views
2

Я хочу добавить кнопки на моей статье, так что я могу знать, сколько раз его клика и обновление счетчика в базе данных, я использую Mongoid, моя модель:Добавление нажатия кнопки счетчика в рельсах 3

class Article 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    field :title, :type => String 
    field :content, :type => String 
    field :likes, :type => Integer ,:default => 0 
    field :dislikes, :type =>Integer, :default => 0 
    field :spam, :type => Integer, :default => 0 
end 

Мои статьи показать контроллер:

def show 
    @article = Article.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render :json => @article } 
    end 
    end 

Мой Посмотреть на шоу:

<p id="notice"><%= notice %></p> 

<p> 
    <b>Title:</b> 
    <%= @article.title %> 
</p> 

<p> 
    <b>Content:</b> 
    <%= raw @article.content %> 
</p> 

Likes : <%= @article.likes %> <br/> 
Dislikes : <%= @article.dislikes %><br/> 
Spams : <%= @article.spam %><br/> 


<%= link_to 'Edit', edit_article_path(@article) %> | 
<%= link_to 'Back', articles_path %> 

я нахожу что-нибудь о это в Интернете.

Как я могу это достичь?

ответ

4

Проще всего сделать бы добавить атрибут в click_count целое к вашей Article модели и затем увеличить это в коде контроллера:

def show 
    @article = Article.find(params[:id]) 
    @article.increment! :click_count 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render :json => @article } 
    end 
end 
0

я получил это сделать, уф!

я добавил следующую форму в моем show.html.erb:

<%=form_for(@article,:action=>"update") do |f| %> 
<%= submit_tag "Like", :name=>"like"%> 
<%= submit_tag "Dislike",:name=>"dislike"%> 
<%= submit_tag "Spam",:name=>"spam" %> 
<%end%> 

и написал следующий контроллер обновления:

def update 
    @article=Article.find(params[:id]) 
    if params[:like] 
     @[email protected]+1 
    elsif params[:dislike] 
     @[email protected]+1 
    elsif params[:spam] 
     @[email protected]+1 
    end 
    respond_to do |format| 
     if @article.update_attributes(params[:article]) 
     format.html {redirect_to @article, :notice => "Article Updated"} 
     else 
     format.html {render :action=>"edit", :notice=> "Unable to update Article , sorry! :("} 
     end 
    end 
    end 

Он работал как шарм.

Смежные вопросы