更新的代碼Rails3中路由錯誤在底部阿賈克斯
我創建一個故事表決通過應用Rails的簡單的2本書。我得到這個錯誤,當我按一下按鈕投了一個故事:
No route matches "/stories/4-pure-css-icons-showcase"
我的路由文件看起來是這樣的:
Shovell::Application.routes.draw do
get "votes/create"
root :to => "stories#index"
resources :stories do
resources :votes
end
end
votes_controller.rb:
class VotesController < ApplicationController
def create
@story = Story.find(params[:story_id])
@story.votes.create
end
end
create.rsj:
page.replace_html 'vote_score', "Score: #{@story.votes.size}"
page[:vote_score].visual_effect :highlight
show.html.erb:
<h2>
<span id="vote_score">
Score: <%= @story.votes.size %>
</span>
<%= @story.name %>
</h2>
<p>
<%= link_to @story.link, @story.link %>
</p>
<div id="vote_form">
<%= form_tag :url => story_votes_path(@story), :remote => true do %>
<%= submit_tag 'shove it' %>
<% end %>
</div>
story.rb:
class Story < ActiveRecord::Base
validates_presence_of :name, :link
has_many :votes
def to_param
"#{id}-#{name.gsub(/\W/, '-').downcase}"
end
end
我已經通過一些其他錯誤的工作在這之前有做不推薦使用的代碼等等,等等我現在感覺有些失落。它似乎應該只是一個路由問題,但由於我一直在處理AJAX錯誤,這也與投票功能有關,所以我想發佈這些文件,以防萬一它不僅僅是路由。
它說沒有路由匹配"/stories/4-pure-css-icons-showcase"
但是當我訪問"/stories"
(我的根),然後單擊鏈接帶我去"/stories/4-pure-css-icons-showcase"
它工作正常,但是點擊投票按鈕,我得到這個錯誤後。正如您在閱讀完代碼後可能知道的那樣,假設更新投票計數並通過ajax執行:highlight
。
UPDATE:
改變的代碼(所有的改變都是每山姆的建議):
路線:
Shovell::Application.routes.draw do
resources :votes
root :to => "stories#index"
resources :stories do
resources :votes
end
show.html.erb:
<div id="vote_form">
<%= form_tag :url => new_story_vote_path(@story), :remote => true do %>
<%= submit_tag 'shove it' %>
<% end %>
</div>
votes_controller.rb
class VotesController < ApplicationController
def create
@story = Story.find(params[:story_id])
@story.votes.create
respond_to do |format|
format.html
format.js
end
end
的問題仍然是完全一樣的,但我認爲(讀:希望如此),我們都在進步!
場景:我的指數(/stories
)頁面隨機顯示此頁它的數據庫,當你點擊它把你的鏈接故事的內部頁面(前/stories/2-sitepoint-forums
)一個故事顯示的票數這個故事有一個按鈕可以爲它投票。當您點擊投票按鈕時,它會使用ajax更新@story.vote.size
並使用:highlight
視覺效果。然而,問題是,當你點擊投票按鈕的頁面變爲「路由錯誤」網頁,其中顯示:
No route matches "/stories/2-sitepoint-forums"
其怪我,因爲你其實可以路由到該地址和你從第一頁上的鏈接...
下面是在控制檯上的錯誤:
Started POST "/stories/2-sitepoint-forums?url=%2Fstories%2F2-sitepoint-forums%2F
votes%2F2-sitepoint-forums&remote=true" for 127.0.0.1 at 2010-11-08 16:30:17 -08
00
ActionController::RoutingError (No route matches "/stories/2-sitepoint-forums"):
Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0.rc2/lib/action_dis
patch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0m
s)
林不知道這是否更具說服力,但我想我會添加它incase。
新: 我一直沒能解決這個問題的呢。因爲我仍然不覺得自己完全理解了這個問題,所以我決定轉到在線Ruby on Rails 3教程,看看在解決這個問題時我是否無法弄清楚。因爲我打算接下來要做的事情(我計劃稍後將兩個應用程序結合起來),現在看來是時候了。
可以重述正是問題低於你更新後的代碼是什麼? – s84 2010-11-07 23:20:35
與場景的描述和詳細的問題 – tehaaron 2010-11-08 00:02:02