2013-06-04 3 views
0

привет, я пытаюсь обновить значение в моей базе данных (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

Там нет ничего особенно плохого в том, что вы делает. Вашему контроллеру не нужно использовать 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 
+0

есть лучший способ использовать ссылки/маршрут? –

+0

Они выглядят абсолютно нормально. Ваши маршруты можно немного упростить, ответьте на обновления. Ваша ссылка в порядке, 'link_to_remote' раньше был способ сделать это, но был устаревшим в rails 3 в пользу': remote => true'. – Matt

+0

хотя мне нужно использовать use ': method => 'put'' в моей ссылке? –

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