2012-09-14 59 views
1

friendships_controller.rbRuby on Rails的使用 「創建」,在控制器方法如GET工作不

class FriendshipsController < ApplicationController 

    # POST /friendships 
    # POST /friendships.json 
    def create 

    #@friendship = Friendship.new(params[:friendship]) 
    @friendship = current_user.friendships.build(:friend_id => params[:friend_id]) 

    respond_to do |format| 
     if @friendship.save 
     format.html { redirect_to user_profile(current_user.username), notice: 'Friendship was successfully created.' } 
     format.json { render json: @friendship, status: :created, location: @friendship } 
     else 
     format.html { redirect_to user_profile(current_user.username), notice: 'Friendship was not created.' } 
     format.json { render json: @friendship.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /friendships/1 
    # DELETE /friendships/1.json 
    def destroy 
    @friendship = Friendship.find(params[:id]) 
    @friendship.destroy 

    respond_to do |format| 
     format.html { redirect_to friendships_url } 
     format.json { head :no_content } 
    end 
    end 
end 

,當我去http://localhost:3000/friendships?friend_id=1我得到

Unknown action 

The action 'index' could not be found for FriendshipsController 

我跟着這個教程:http://railscasts.com/episodes/163-self-referential-association

回答

2

您可能將創建配置爲POST而不是GET。

# POST /friendships 
    # POST /friendships.json 
    def create 

如果您使用腳手架來創建控制器的骨架,也是這種情況。你可以在路由配置中改變它。但請注意,通過GET創建內容不再被視爲完全符合REST範例。

+0

我將通過AJAX對這些友好的要求,但由於我起步,我想我會按照上面列出的教程,但後來我得到成問題......也查看了教程源代碼,我找不到將路由創建成GET的路由上的任何奇怪的東西...... – fxuser

+0

本頁有一些路由選擇:http:// guides .rubyonrails.org/routing.html - 標準條目可能類似於:資源:友誼 - 但這將像創建標準動作的宏一樣。標準意味着在這種情況下,POST被映射到創建。 –

0

正如另一篇文章中提到的,這可能是由於rails的默認腳手架將POST請求配置爲create的事實造成的。爲了解決這個問題,你可以嘗試這樣的事情,儘管我不確定它會起作用。

match "/friendships" => "friendships#create", :via => [:get] 
    get "/friendships" => "friendships#create" 

的缺點是,GET請求/friendships不會給你的index行動,因爲是默認情況下。

也許你可以用這樣的事情解決這個問題:

match "/all_friendships", :to => "friendships#index", :via => :get, :as => :friendships 
相關問題