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 回答