Ich baue eine App, um Sport-Spiele zu speichern, für die alle Benutzer in getrennten Ligen platziert werden. Ich habe viele zu viele dafür eingerichtet, aber wenn ein Benutzer die Anwendung anschaut, kann er nur alle Informationen von seiner aktuellen_League sehen.Aktualisieren Sie ein Attribut mit Wert aus Schleife
Jetzt versuche ich eine Schleife mit allen Ligen, in denen ein Benutzer ist, zu machen und der Benutzer sollte in der Lage sein, auf die Liga zu klicken, um seine aktive Liga zu ändern.
Routen
resources :users do
member do
post :change_current_league
end
end
Usercontroller
def change_current_league
@user = current_user
@user.update(:current_league_id, params[:league_id])
redirect_to :back, :notice => "Successfully changed your active league"
end
Ansicht
<% current_user.leagues.each do |l| %>
<%= link_to change_current_league_user_path(current_user, l), method: :post, class: 'btn btn-default btn-sm' do %>
<%= l.id %><%= l.league_name %><br>
<% end %>
<% end %>
Was soll ich tun, diese Arbeit zu bekommen?
Sorry, wenn es ein bisschen wie ein Noob Frage: P
EDIT:
def change_current_league
@user = current_user
@user.update_attribute(:current_league_id, 1)
redirect_to :back, :notice => "Successfully changed your active league"
end
resources :users do
member do
patch :change_current_league
end
end
Dies funktioniert, aber wie bekomme ich die richtige league_id in den Anwender-Controller?
EDIT2:
def change_current_league
@league = League.find(params[:league_id])
@user = current_user
@user.update_attribute(:current_league_id, @league)
redirect_to :back, :notice => "Successfully changed your active league"
end
Sie aktualisieren Verwendung r atrribute so seine a put/patch Anfrage nicht post Methode – Navin
übergeben Sie die Liga_id als Parameter mit Ihrem Link wie folgt <% = link_to change_current_league_user_path (current_user, current_league_id: l.id), Methode:: patch, Klasse: 'btn btn -default btn-sm 'do%> – Navin
Okay thx. und jetzt habe ich das im usercontroller probiert (check edit). Aber es aktualisiert das Feld auf Null. –