2012-06-10 24 views
0

Rails 3.2.3想在我的Rails寫了一個「點」系統3應用

我想要一個「點」功能添加到我的Rails應用程序。這個想法非常簡單,如果你點擊UP你的點數將增加1.如果你點擊DOWN你的點數將減少1點。但由於某些原因點數不會改變,並且我創建的每個新鏈接點數會增加10點。

我有個默認爲0在我的移民文件(但他們從來沒有顯示爲零)

t.column :points, :integer, :default => 0` 

這裏是我的視圖代碼部分

<td> 
    <%= link_to "Up", 
        :url => { :action => 'modify_points', 
           :id => link.id, 
           :by => 1 }, 
           :remote => true, 
        :update => "link" + link.id.to_s %> 
</td> 
<td> 
    <%= link_to "Down", 
        :url => { :action => 'modify_points', 
           :id => link.id, 
           :by => -1 }, 
           :remote => true, 
        :update => "link" + link.id.to_s %> 

</td> 

<td> 
    <b> <a href="<%= link.url %>"> <%= link.description %> </a> </b> 
    (<%= if link.url =~ /:\/\/([^\/]*)/ then $1 else "wrong URL" end %>) <br/> 
    <span id="link"><%= link.id.to_s %><%= link.points %> </span> 
    points posted <%= time_ago_in_words link.created_at %> ago 
</td> 

,這裏是我的modify_points方法在我links_controller.rb:

def modify_points 
     @link = Link.find(params[:id]) 
     @link.update_attribute :points, @link.points + params[:by].to_i if params[:by] =~ /[+|-]?1/ 
     render_text @link.points 
    end 

現在,我的第一個提交的鏈接有10分,我的第二個環節都有20分,我的第三個環節都有30分...等等....等。 。和UP & DOWN鏈接什麼都不做。爲什麼我看不到0的默認點值? modify_points方法中的正則表達式代碼是否會導致這些錯誤?

** 編輯:這裏是當按下UP LINK **

Processing by LinksController#submissions as HTML 
    (0.1ms) SELECT COUNT(*) FROM "links" 
    Link Load (0.3ms) SELECT "links".* FROM "links" LIMIT 20 OFFSET 0 
    Rendered links/submissions.html.erb within layouts/application (145.9ms) 
Completed 200 OK in 435ms (Views: 316.5ms | ActiveRecord: 9.4ms) 


Started GET "/assets/links.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:49 -0700 
Served asset /links.css - 304 Not Modified (8ms) 


Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:51 
-0700 
Served asset /application.js - 304 Not Modified (9ms) 


Started GET "/assets/defaults.js" for 127.0.0.1 at 2012-06-11 10:08:51 -0700 
Served asset /defaults.js - 404 Not Found (3ms) 

ActionController::RoutingError (No route matches [GET] "/assets/defaults.js"): 
    actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
    railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app' 
    railties (3.2.3) lib/rails/rack/logger.rb:16:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
    rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
    activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
    rack (1.4.1) lib/rack/lock.rb:15:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call' 
    railties (3.2.3) lib/rails/engine.rb:479:in `call' 
    railties (3.2.3) lib/rails/application.rb:220:in `call' 
    rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
    railties (3.2.3) lib/rails/rack/log_tailer.rb:14:in `call' 
    rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 


    Rendered /Users/accraze/.rvm/gems/[email protected]/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.8ms) 


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:51 -0700 
Served asset /application.css - 304 Not Modified (4ms) 


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:51 -0700 
Served asset /jquery.js - 304 Not Modified (4ms) 


Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:51-0700 
Served asset /scaffolds.css - 304 Not Modified (3ms) 


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:51-0700 
Served asset /jquery_ujs.js - 304 Not Modified (3ms) 


Started GET "/assets/links.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:51 -0700 
Served asset /links.js - 304 Not Modified (2ms) 


Started GET "/?remote=true&update=link4&url%5Baction%5D=modify_points&url%5Bby%5D=1&url%5Bid%5D=4" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Processing by LinksController#submissions as HTML 
    Parameters: {"remote"=>"true", "update"=>"link4", "url"=>{"action"=>"modify_points", "by"=>"1", "id"=>"4"}} 
    (0.2ms) SELECT COUNT(*) FROM "links" 
    Link Load (0.2ms) SELECT "links".* FROM "links" LIMIT 20 OFFSET 0 
    Rendered links/submissions.html.erb within layouts/application (14.7ms) 
Completed 200 OK in 21ms (Views: 20.4ms | ActiveRecord: 0.4ms) 


Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Served asset /application.css - 304 Not Modified (0ms) 


Started GET "/assets/scaffolds.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:54-0700 
Served asset /scaffolds.css - 304 Not Modified (0ms) 


Started GET "/assets/links.css?body=1" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Served asset /links.css - 304 Not Modified (0ms) 


Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:54-0700 
Served asset /application.js - 304 Not Modified (0ms) 


Started GET "/assets/links.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Served asset /links.js - 304 Not Modified (0ms) 


Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Served asset /jquery.js - 304 Not Modified (0ms) 


Started GET "/assets/defaults.js" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
Served asset /defaults.js - 404 Not Found (4ms) 

ActionController::RoutingError (No route matches [GET] "/assets/defaults.js"): 
    actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
    railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app' 
    railties (3.2.3) lib/rails/rack/logger.rb:16:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
    rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
    activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
    rack (1.4.1) lib/rack/lock.rb:15:in `call' 
    actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call' 
    railties (3.2.3) lib/rails/engine.rb:479:in `call' 
    railties (3.2.3) lib/rails/application.rb:220:in `call' 
    rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
    railties (3.2.3) lib/rails/rack/log_tailer.rb:14:in `call' 
    rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
    /Users/accraze/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 


    Rendered /Users/accraze/.rvm/gems/[email protected]/gems/actionpa 
ck-3.2.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb with 
in rescues/layout (0.8ms) 


Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2012-06-11 10:08:55- 
0700 
Served asset /jquery_ujs.js - 304 Not Modified (0ms) 
+0

這聽起來好像你有多個問題,可能是彼此無關 - 當您創建的鏈接是不使用默認值,而modify_points不按預期工作。您是否可以包含通過單擊其中一個鏈接生成的rails服務器日誌副本? – MrTheWalrus

+0

只是在按下UP鏈接時添加了服務器日誌 –

回答

0

那麼,你希望你的鏈接不會做我的Rails服務器記錄 - 你可以從日誌中看到,這裏:

Processing by LinksController#submissions as HTML 
Started GET "/?remote=true&update=link4&url%5Baction%5D=modify_points&url%5Bby%5D=1&url%5Bid%5D=4" for 127.0.0.1 at 2012-06-11 10:08:54 -0700 
    Processing by LinksController#submissions as HTML 
    Parameters: {"remote"=>"true", "update"=>"link4", "url"=>{"action"=>"modify_points", "by"=>"1", "id"=>"4"}} 

它把你的url作爲一個普通參數,並將它傳遞給LinksController#提交。你應該使用基於路線的幫手?像這樣的事情,這取決於你的路線是什麼樣子:

<%= link_to('UP', link_modify_points_path(link, :by => 1), :remote => true) %>