2009-11-23 81 views
0

任何人都可以幫助解決這個問題後:軌重定向創建問題

在「創造」,將用戶重定向到URL:模型/ MODEL_ID(如柱/ 1),而不是我重定向到模型/ url_encoding_object (例如posts /。%23),並且在控制檯中有一個「406 Not Acceptable」消息。

通常,在創建時,控制檯的消息是「Processing PostsController#create(對於000.0.0.0,在2009-11-23 12:32:52)[POST]」,但是出現此錯誤消息是「Processing PostsController#create to#(對於000.0.0.0在2009-11-23 12:32:52)[POST]「

我見過austinfromboston的迴應,並嘗試了他的」老式但有效「的解決方案來解決類似的問題,但它不適合我。

任何幫助,將不勝感激

控制器代碼:

# POST /groups 
# POST /groups.xml 
def create 
    @group = Group.new(params[:group]) 
    @group.category = params[:category] 
    @group.user = current_user 

    #here we add the current user to the membership collection of the group 
    @membership = @group.memberships.build(params[:membership]) 
    @membership.group = @group 
    @membership.user = current_user 
    @membership.initiator = false 
    @membership.membership_status_id = 2 

    #and here we set the current_user as the owner of the group 
    @group_permission = @group.group_permissions.build(params[:group_permission]) 
    @group_permission.membership = @membership 
    @group_permission.group_role = GroupRole.find_by_name('Owner') 

    unless params[:metro_area_id].blank? 
    @group.metro_area = MetroArea.find(params[:metro_area_id]) 
    @group.state  = (@group.metro_area && @group.metro_area.state) ? 
     @group.metro_area.state : nil 
    @group.country  = @group.metro_area.country if (@group.metro_area && 
     @group.metro_area.country) 
    else 
    @group.metro_area = @group.state = @group.country = nil 
    end 
    @group.tag_list = params[:tag_list] || '' 

# unless @user.is_in_group?(@group) 
#  @user.memberships << @group 
# end 
respond_to do |format| 
    if @group.save 
     flash[:notice] = :group_was_successfully_created.l 
     format.html { redirect_to(group_path(@group.id)) } 
    else 
     format.html { 
     @metro_areas, @states = setup_metro_area_choices_for(@group) 
     if params[:metro_area_id] 
      @metro_area_id = params[:metro_area_id].to_i 
      @state_id = params[:state_id].to_i 
      @country_id = params[:country_id].to_i 
     end 
     render :action => "new" 
     } 
    end 
    end 
end 
+0

解決:修復包括修訂到的form_tag,以及一個redirect_to的user_group_path(@ group.owner,@group) 感謝大家的幫助和指導。 – nml 2009-11-26 02:33:11

回答

1

看起來無論是你的路由是關閉的地方或者你MODEL_ID參數不是你期待什麼。可能要檢查看看該參數設置爲什麼。

如果沒有看到控制器代碼,也很難給出任何建議。你可以發佈進行此調用的方法嗎?

0

#POST /組 #POST /groups.xml DEF創建 @group = Group.new(PARAMS [:組]) @ group.category =參數[:類別] @ group.user = CURRENT_USER

#here we add the current user to the membership collection of the group 
@membership = @group.memberships.build(params[:membership]) 
@membership.group = @group 
@membership.user = current_user 
@membership.initiator = false 
@membership.membership_status_id = 2 

#and here we set the current_user as the owner of the group 
@group_permission = @group.group_permissions.build(params[:group_permission]) 
@group_permission.membership = @membership 
@group_permission.group_role = GroupRole.find_by_name('Owner') 

unless params[:metro_area_id].blank? 
    @group.metro_area = MetroArea.find(params[:metro_area_id]) 
    @group.state  = (@group.metro_area && @group.metro_area.state) ? @group.metro_area.state : nil 
    @group.country  = @group.metro_area.country if (@group.metro_area && @group.metro_area.country) 
else 
    @group.metro_area = @group.state = @group.country = nil 
end 
@group.tag_list = params[:tag_list] || '' 

除非@ user.is_in_group?(@組)

@ user.memberships < < @group

respond_to do |format| 
    if @group.save 
    flash[:notice] = :group_was_successfully_created.l 
    format.html { redirect_to(groups_path(@group.id)) } 
    else 
    format.html { 
     @metro_areas, @states = setup_metro_area_choices_for(@group) 
     if params[:metro_area_id] 
     @metro_area_id = params[:metro_area_id].to_i 
     @state_id = params[:state_id].to_i 
     @country_id = params[:country_id].to_i 
     end 
     render :action => "new" 
    } 
    end 
end 

+2

您應該編輯您的原始問題以包含此代碼。 – 2009-11-23 21:44:27

+1

我已將代碼移到了您的任務中。你應該刪除這個答案。 – EmFi 2009-11-23 22:31:09

1

有很多多餘的代碼,在您的控制器。它仍然有效,但是你正在以艱難的方式做很多事情。

你的問題是這樣的一行:

format.html { redirect_to(groups_path(@group.id)) } 

會被重定向到集體組網址添加參數@ group.id。

它應該是什麼

format.html { redirect_to(group_path(@group.id)) } 
+0

謝謝 - 最初有簡潔的版本,以及第二個建議,但都不起作用,所以我嘗試了austinfromboston在這個問題的建議http://stackoverflow.com/questions/963090/redirects-with-datamapper -rails btw - 抱歉,我是這個網站的新手,無法找到與代碼 – nml 2009-11-23 22:50:33

+0

的答案的'刪除'鏈接您沒有提及datamapper或鏈接到其他問題,所以我認爲簡潔的版本會工作。我已經更正了datamapper對象的這個答案。 – EmFi 2009-11-23 23:13:44

+0

不是 - datamapper不是圖片的一部分,但我引用demo的問題是一個類似的問題(具有類似的url重定向)。感謝第二個建議,將groups_path更改爲group_path,但這不能解決問題。 欣賞你的時間! – nml 2009-11-24 01:59:13

0

這是什麼.1行到底在幹什麼?

flash[:notice] = :group_was_successfully_created.l 

我試圖在我的環境中運行類似的代碼,它窒息了。

還應參考:

group_path(id) 

groups_path(id) 
+0

錯誤消息結尾處的.l是Haml。有 redirect_to(@group) 開始,但一直在玩不同的路徑... – nml 2009-11-24 04:53:29