点击更新数据库

时间:2013-06-04 09:23:40

标签: ruby-on-rails routes haml

嗨我正在尝试更新我的数据库(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

1 个答案:

答案 0 :(得分: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