私のビューファイルには
%td= link_to 'Destroy', Fund_subfund_path(@fund, subfund), :method => :delete, :data => { :confirm => 'よろしいですか?' }
私のコントローラーは
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 を試してみましたが、それでも「Destroy」が非アクティブなリンクとして表示され、ユーザーを混乱させると思います。