Rails 3 link_to :remote => true

Witam mam następujący problem mam listę użytkowników którym administrator może przypisać rolę administratora za pomocą link_to:

<h1>Users</h1> <% @users.each do |user| %> <%= link_to user.email, user %> <% if current_user.admin? %> | <% if user.admin? %> <%= link_to "remove admin role", remove_admin_url(:id => user.id, :format => :js), :remote => true, :id => "remove_admin_link[#{user.id}]" %> <% else %> <%= link_to "add admin role", add_admin_url(:id => user.id, :format => :js), :remote => true, :id => "add_admin_link[#{user.id}]" %> <% end %> <br /> <% end %> <br /> <% end %>
W kontrolerze users_controller stworzyłem odpowiednio dwie akcje remove_admin oraz add_admin:

[code] def add_admin
@user = User.find(params[:id])
@user.update_attribute :admin, true
respond_to do |format|
format.js { @user }
end
end

def remove_admin
@user = User.find(params[:id])
@user.update_attribute :admin, false
respond_to do |format|
format.js { @user }
end
end[/code]
Oraz stworzyłem dwa szablony js add_admin.js.erb oraz remove_admin.js.erb i w nich chciałbym podmienić link “add admin role” po jego kliknięciu na link “remove admin role”, nie wiem za bardzo jak to zrobić, ponieważ samo nawet schowanie tego linku za pomocą funkcji hide nie działa, sprawdziłem np że div’a postaci

ukryje ale linka nie ukrywa mam coś takiego w tych szablonach:
add_admin.js.erb
$('#add_admin_link[<%= @user.id %>]').hide();

remove_admin.js.erb

$('#remove_admin_link[<%= @user.id %>]').hide();

Niestety ten sposób nie działa, w zasadzie nie pojawia się żaden błąd ale nie mogę znaleźć przyczyny. Tak jak psiałem prosty div się ukryje i działa.

Routing:

match 'user/add_admin/:id' => 'users#add_admin', :as => :add_admin match 'user/remove_admin/:id' => 'users#remove_admin', :as => :remove_admin

Wydaje mi się że nie możesz stosować znaków [ oraz ] w atrybutach “id”. Powód jest taki, że #remove_admin_link[…] będzie przez jQuery interpretowane jako selektor CSS, nie poprawny z resztą. W CSS nawiasy kwadratowe służą do odwoływania się do atrybutów obiektu drzewa DOM, na przykład:

input[type=‘text’] wyłapie pola tekstowe,
a[href=‘http://forum.rubyonrails.pl’] linki do tej strony itd.

Zmień atrybut id na coś co używa tylko liter, cyfr i podkreśleń i będzie śmigać.

Poza tym, przeczytaj to: http://rubyonrails.pl/forum/t3923-Dodawa�-akcje-czy-stworzy�-nowy-kontroler%3F

bo dodawanie akcji add_admin i remove_admin, dostępnych poprzez GET jest nie tylko nie ładne ale również potencjalnie niebezpieczne (wyobraź sobie że ktoś wrzuca I got admin, babe! na swoim profilu, a Ty tam wchodzisz będąc zalogowany jako admin… i koleś ma już admina!

Witam dzięki za odpowiedź i pomoc chodź juz tak późno na tym forum można liczyć na profesjonalną pomoc o każdej porze :slight_smile: Pozdrawiam i dzięki serdeczne

Czyli dobrze zrozumiałem mam stworzyć nowy kontroler z tymi akcjami?

Bardziej przyczepiam się do tego że akcje są dostępne metodą GET.

Ok dodałem do link_to :method => :post czy jest to poprawne ?