我正在尝试允许用户“收藏”链接(也就是说,使用Favorite
和user_id
创建新的link_id
记录。这是我到目前为止所拥有的..
当我点击收藏夹(作为用户)时,新记录将分配给user_id,但link_id字段为nil。如何将link_id
传递给我的FavoritesController
?
已添加 Link Model Code
class FavoritesController < ApplicationController
def create
@user = User.find(session[:user_id])
@favorite = @user.favorites.create :link_id => params[:id]
redirect_to :back
end
end
Favorite
模型属于:user
和:link
注意:我也尝试了this但是当我点击“收藏”时,会出现“无法找到没有ID的链接”的错误。
更新
<%= link_to "Favorite", :controller => :favorites, :action => :create, :link_id => link.id %>
带
class FavoritesController < ApplicationController
def create
@user = User.find(session[:user_id])
@favorite = @user.favorites.create :link_id => :params[:link_id]
redirect_to :back
end
end
返回“无法将符号转换为整数”
app/controllers/favorites_controller.rb:4:in []
app/controllers/favorites_controller.rb:4:in create
我尝试使用.to_i
答案 0 :(得分:2)
您可以尝试以下
在您的观点中:
<%= 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
希望这应该有用
答案 1 :(得分:0)
你应该尝试:
@user = User.find(session[:user_id])
@favorite = Favorite.create :link_id => params[:id]
@favorite.user = @user
答案 2 :(得分:0)
失败因为params [:id]为零。把
throw params
在create方法的开头,检查那里有什么。请点击你视图中的代码。