1

こんにちは、ユーザーが特定のリンクをクリックしたときにデータベース (PostgreSQL) 内の値を更新しようとしていますが、私が持っているものは機能していますが、ベストプラクティスとは思いません。誰かがこれをよりよく達成する方法を示すことができれば素晴らしいでしょう

見る

%ul.button-group.round.even-3
          %li= link_to '<i class="general foundicon-checkmark"></i>'.html_safe, accept_availability_path(a), :method => 'put', :remote => true, :class => 'button success tiny', :id => a.id, :disable_with => ''

コントローラ

    def accept
    @availability = Availability.find(params[:id])
    @availability.available= true

    respond_to do |format|
      if @availability.update_attributes(params[:availability])
        format.html { render :nothing => true }
        format.js
      else
        format.html { render :action => "edit" }
        format.js
      end
    end
  end

ルート

resources :availabilities do
    put 'accept', :on => :member
    put 'decline', :on => :member
  end
4

1 に答える 1

2

あなたのしていることには特に問題はありません。コントローラーは update_attributes を使用する必要はありません。属性を渡していません。saveに変更するだけでそれができます.available

def accept
  @availability = Availability.find(params[:id])
  @availability.available = true

  respond_to do |format|
    if @availability.save
      format.html { render :nothing => true }
      format.js
    else
      format.html { render :action => "edit" }
      format.js
    end
  end
end

次のようにルートを整理できます。

resources :availabilities do
  member do 
    put :accept 
    put :decline
  end
end
于 2013-06-04T10:37:54.260 に答える