2011-12-18 2 views
0

все, что я хочу, дубликат существующей записи. Он должен отображать новую форму с заполненными данными и позволить мне «Создать» эту новую запись.рельсы дубликат запись не рендеринг новый

def clone 
    @agreement = Agreement.find_by_slug!(params[:id]) 
    @agreement.clone 

    respond_to do |format| 
    format.html { render action: "new", notice: 'Agreement was successfully cloned.' } 
    end 
end 

My Model

def clone 
    self.dup() 
    self.slug = nil 
end 

Я получаю эту ошибку:

No route matches {:action=>"show", :controller=>"agreements", :format=>nil, :id=>#<Agreement id: 1, date: "2011-12-18",...` 

Маршруты

resources :agreements do 
    member do 
    post 'approve' 
    get 'clone', :controller => 'agreements', :action => 'clone' 
    end 
end 

ответ

2

Я думаю, что ваш метод клон должен быть:

def clone 
    clone = self.dup() 
    clone.slug = nil 
    clone 
end 

И контроллер:

agreement = Agreement.find_by_slug!(params[:id]) 
@agreement = agreement.clone 

пс: Почему вы указать контроллер и действие в маршрутах. Это будет дефолт, или я что-то упущу?

+0

Спасибо @Robin Ошибка исчезла. Сейчас работает клонирование. Любая идея, как включить has_many ассоциации, а? Я также удалил пух на своих маршрутах, наследие из предыдущего номера – Gaelle

+0

Я пытался найти хороший ответ на этот вопрос некоторое время. Это лучшее, что я нашел. Плюс это работает! – memoht