我在RoR網站內建立友誼。它的模型是user_id,friend_id和pending(布爾)。我大部分時間都是關於RailsCast的朋友關係,但也做了一些改變。我至今是,當你去一個用戶的頁面,您可以點擊請求友誼和代碼使用:軌道上的紅寶石沒有路線匹配動作:刪除
user_friendships_path(current_user, :friend_id => @user), :method => :post
這就需要在友誼控制器的創建方法。它會自動將pending設置爲true。我現在想要的是有一個接受它的鏈接,這將只是等待爲false。所以,我想設置它像
(<%= link_to "Accept", user_friendship_path(:user_id => current_user.id, :friend_id => friendship.user.id, :pending => 'false'), :method => :put %>)
我其實不願意去編輯頁面,因爲它只是需要的是布爾值設置爲false,所以我想直接調用更新。但當我運行此頁時,出現錯誤:
No route matches {:action=>"destroy", :controller=>"friendships", :user_id=>1, :friend_id=>2, :pending=>"false"}
我不明白爲什麼。我沒有調用destroy(這將是:method =>:delete),並且友誼控制器中實際上有一個銷燬方法。
的資源設置,如:
resources :users do
resources :friendships
end
而且從運行 「耙路線」 的路徑是:
user_friendships GET /users/:user_id/friendships(.:format) {:action=>"index", :controller=>"friendships"}
user_friendships POST /users/:user_id/friendships(.:format) {:action=>"create", :controller=>"friendships"}
new_user_friendship GET /users/:user_id/friendships/new(.:format) {:action=>"new", :controller=>"friendships"}
edit_user_friendship GET /users/:user_id/friendships/:id/edit(.:format) {:action=>"edit", :controller=>"friendships"}
user_friendship GET /users/:user_id/friendships/:id(.:format) {:action=>"show", :controller=>"friendships"}
user_friendship PUT /users/:user_id/friendships/:id(.:format) {:action=>"update", :controller=>"friendships"}
user_friendship DELETE /users/:user_id/friendships/:id(.:format) {:action=>"destroy", :controller=>"friendships"}
任何幫助將不勝感激。如果您需要更多信息,請告訴我。
謝謝。
如果您嘗試:link_to「Accept」,user_friendship_path(:user_id => current_user.id,:friend_id => friendship.user.id),:method =>:put%>)會怎麼樣?其實,你不需要發送待處理的參數,這種安全漏洞 – apneadiving 2011-01-30 23:57:21