2013-04-19 2 views
1

В моем файле представления у меня естьКак прервать метод destroy до его подтверждения?

% Td = link_to 'Destroy', fund_subfund_path (@fund, Subfund): метод => : удаление: данные => {: подтвердить => «Вы конечно?' }

Мой контроллер имеет

def destroy 
    @subfund = Subfund.find(params[:id]) 
    fund_id = @subfund.fund_id 
    nickname = @subfund.nickname 
    if @loans.empty? 
    @subfund.destroy 
    respond_to do |format| 
     format.html { redirect_to fund_path(fund_id), notice: 'Subfund ' + nickname + ' was destroyed.' } 
     format.json { head :no_content } 
    end 
    else 
    respond_to do |format| 
     format.html { redirect_to fund_path(fund_id), 
     notice: 'Subfund ' + nickname + " has Loans, so can't be destroyed." } 
     format.json { head :no_content } 
    end 
    end 
end 

редиректы и сообщения работают отлично. Моя проблема в том, что даже если @loans не пуст, а действие @ subfund.destroy не выполняется, вы уверены, что? подтверждение все еще появляется.

Как перехватить этот метод до сообщение с подтверждением?

Я попробовал link_to_if в качестве альтернативы, но это все еще отображает «Уничтожить» как неактивную ссылку, которая, я думаю, будет запутать пользователя.

ответ

2

Baylor Rae является хорошим ответом, в частности, он проверяет в реальном времени, если есть какие-либо ссуды.

Вы также можете рассмотреть более простую альтернативу: при рендеринге страницы, на которой удаляется ссылка link_to, вы можете поставить или не удалить кнопку, основанную на том, что есть или нет кредиты.

Я тоже не говорю HAML, но я уверен, что для включения вашего% td = link_to в оператор if ... else ... end я уверен.

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

Cheers,

+0

Этот ответ отлично подойдет для меня. Я добавил строку else, чтобы, если у субфонда нет кредитов, появляется ссылка «Destroy», и если у нее есть хотя бы один кредит, вместо этого она отображает, сколько у нее кредитов. – user962915

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