Вы можете попробовать следующее
На ваш взгляд:
<%= link_to "Favorite", :controller => :favorites, :action => :create, :link_id => link.id %>
В вашем контроллере:
class FavoritesController < ApplicationController
def create
@user = User.find(:first, :conditions => ["id = ?", session[:id]])
@favorite = @user.favorites.create
@favorite.update_attributes(:link_id => params[:link_id])
redirect_to :back
end
end
Как примечание, при поиске записей я обычно использую:
.find(:first, :conditions => ["id = ?", session[:id]])
, поскольку он избегает большинства материалов, отправленных пользователем, и возвращает одну запись.
Я разбил шаги в вашем контроллере, но вы могли бы объединить их в один такой:
def create
@user = User.find(:first, :conditions => ["id = ?", session[:id]])
@favorite = @user.favorites.create(:link_id => params[:link_id])
redirect_to :back
end
надеюсь, это должно сработать