2009-11-23 2 views
0

Может кто-нибудь помочь с этой проблемой:рельсов перенаправления после создания проблем

После «создать», пользователь перенаправляется на веб-сайте: модель/model_id (например, пост/1), а я перенаправлен к моделям/url_encoding_object (например, posts /.% 23), и в консоли есть сообщение «406 Not Acceptable».

Как правило, при создании сообщение консоли «Обработка PostsController # create (для 000.0.0.0 в 2009-11-23 12:32:52) [POST]», но с этой ошибкой появляется сообщение «Обработка PostsController # create to # (для 000.0.0.0 в 2009-11-23 12:32:52) [POST] "

Я видел ответ от ответа и попробовал свое« старомодное, но эффективное »решение этой аналогичной проблемы , но это не работает для меня.

Любая помощь будет принята с благодарностью

Controller Код:

# 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

ответ

1

Похоже, либо ваши маршруты куда-то или ваш параметр model_id не то, что вы ожидаете. Возможно, вы хотите проверить, для чего установлен этот параметр.

Также очень сложно дать какие-либо предложения, не видя код контроллера. Можете ли вы опубликовать метод, выполняющий этот вызов?

0

# POST/группы # POST /groups.xml Защиту создать @group = Group.new (PARAMS [: группа]) @ group.category = Params [: категория] @ 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

Вы должны отредактировать исходный вопрос, чтобы включить этот код. –

+1

Я переместил код в квест для вас. Вы должны удалить этот ответ. – EmFi

1

Там много лишнего кода, в контроллере. Он по-прежнему работает, но вы очень много делаете.

Ваша проблема эта линия:

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

Какие перенаправляет к коллективных URL групп добавления параметра @ group.id.

Что должно быть в

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

Спасибо - первоначально была краткая версия, а также второе предложение, но оба не работают, поэтому я попробовал предложение от austinfromboston в вопросе http://stackoverflow.com/questions/963090/redirects-with-datamapper -rails btw - извините, я новичок в этом сайте и не могу найти ссылку «удалить» с ответом на код – nml

+0

Вы не указали datamapper или не связаны с другим вопросом, поэтому я принял краткую версию должно сработать. Я исправил этот ответ для объектов datamapper. – EmFi

+0

Нет - datamapper не является частью изображения, но вопрос, на который я ссылался, аналогичная проблема (с аналогичными перенаправлением URL). Спасибо за второе предложение изменить groups_path на group_path, но это не решает проблему. Цените свое время! – nml

0

Что это +0,1 делает в конце строки ??

flash[:notice] = :group_was_successfully_created.l 

Я попытался запустить аналогичный код в своей среде, и он задохнулся от этого.

Он также должен ссылаться:

group_path(id) 

не

groups_path(id) 
+0

. В конце сообщения об ошибке содержится сообщение .l для Haml. Было redirect_to (@group) , чтобы начать, но играли разными путями ... – nml

Смежные вопросы