2011-12-26 2 views
-1

У меня есть следующие отношения:Мой редактировать действие с помощью создания действия вместо обновления

store.rb -> has_many :products 
product.rb -> belongs_to :store 

routes.rb

resources :stores do 
    resources :products 
end 

builds_controller.rb

def edit 
    @build = Build.find(params[:id]) 
    @user = User.find(@build.user_id) 
    @hero = Hero.find(@build.hero_id) 

    @heros = Hero.order('name ASC') 
    @items = Item.order('name ASC') 

    unless current_user.id == @user.id 
    respond_to do |format| 
     format.html { redirect_to root_path, notice: 'You are only allowed to edit your own builds' } 
    end 
    end 
end 

По какой-то причине , всякий раз, когда я пытаюсь перейти на страницу редактирования для сборки и попытаюсь ее отредактировать, она запускает create действие вместо обновление.

Кто-нибудь знает, что может быть причиной этого?

Кроме того, я хотел бы, чтобы форма на странице редактирования была заполнена текущими данными сборки. Как мне это достичь?

Мой репо: https://github.com/imjp/DotA-Items

ответ

1

Ваша проблема связана с вашей формы:

<%= semantic_form_for([current_user, current_user.builds.build]) do |f| %> 

Это должно быть

<%= semantic_form_for([@user, @build]) do |f| %> 

Теперь в вашем new действия, вы также должны подготовить требуемые переменные:

@user = User.find(params[:user_id]) #assuming you have a path like users/id/builds/new 
# or @user = current_user if that's what you want 
@build = @user.builds.build 

пс: вы должны использовать cancan камень для управления авторизаций, вместо того, чтобы делать такие вещи, как if @user.id == current_user.id и т.д.

+0

Спасибо за ваш ответ. Он по-прежнему создает новые сборки вместо обновления youg:/ – imjp

+1

Когда вы переходите на страницу редактирования сборки, входы заполняются информацией о сборке? – Robin

+0

Теперь он работает! Спасибо чувак. Тем не менее, он по-прежнему не заполняет поля, хотя, когда я перехожу к действию редактирования. Какие-либо предложения? – imjp

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