submit_tag

Witam,

Zaczynam z RoR i jako materiał szkoleniowy postanowiłem zrobić coś na wzór portalu społecznościowego. Jak na razie zrobiłem logowanie za pomocą devise, autoryzacja cancan i wyszukiwanie metasearch(wyszukiwanie użytkowników po adresie email) plus do tego kontroler do wyświetlania profili użytkowników. Problem zaczął się gdy chciałem po wejściu na profil użytkownika dodać go do znajomych.

class ProfilesController < ApplicationController
def index

end

def show
@profile = User.find(params[:id])
end

def update
@profile = User.find(params[:id])
if current_user.id != @profile.id
current_user.friends.map(&:user_id) << Friend.create(:user_id => @profile.id)
end
end

end

View:

Current user id: <%= current_user.id %>

Current profile id: <%= @profile.id %>

Current user friends <%= current_user.friends.map(&:user_id) %>
// to tylko tak dla własnej informacji
<%= @profile.email%>

<% if current_user.id != @profile.id %>

<%= submit_tag "Add to friend", :action => "update" %><br/>

<%end%>
<%= link_to “Back to profile”, home_index_path%>

po kliknięciu w przycisk submit nic się nie dzieje.

Używam rails 3.0 + ruby 1.9.2

Tak na szybko to zamiast:

  current_user.friends.map(&:user_id) << Friend.create(:user_id => @profile.id)

powinno być

  current_user.friends << Friend.create(:user_id => @profile.id)

Warto tez obejrzeć:
http://railscasts.com/episodes/163-self-referential-association

Nadal przycisk nie wykonuje żadnej czynności… Tak jakby nie był podłączony do żadnej akcji. Dzięki za railscast :slight_smile:

A ten submit jest w ramach jakiegoś formularza? Czy tak sobie wolnostojący? :wink:
Bo z kodu, który podałeś, wynika raczej to drugie.