Ruby on rails 将值传递给控制器

Ruby on rails 将值传递给控制器,ruby-on-rails,ruby,ruby-on-rails-3,model-view-controller,Ruby On Rails,Ruby,Ruby On Rails 3,Model View Controller,我试图允许用户“收藏”链接(也就是说,用他们的用户id和链接id创建一个新的收藏记录),这就是我目前所拥有的 当我单击favorite(作为用户)时,新记录被分配给用户id,但链接id字段为零。如何将链接\u id传递到我的收藏夹控制器 已添加 与 我用尝试了几种方法将其强制为整数。要想_I您应该尝试: @user = User.find(session[:user_id]) @favorite = Favorite.create :link_id => params[:id] @f

我试图允许用户“收藏”链接(也就是说,用他们的
用户id
链接id
创建一个新的
收藏
记录),这就是我目前所拥有的

当我单击favorite(作为用户)时,新记录被分配给用户id,但链接id字段为零。如何将
链接\u id
传递到我的
收藏夹控制器

已添加

我用
尝试了几种方法将其强制为整数。要想_I

您应该尝试:

@user = User.find(session[:user_id])

@favorite = Favorite.create :link_id => params[:id]

@favorite.user = @user

它失败,因为params[:id]为nil。放

throw params

在create方法的开头,检查那里有什么可用的。请在您的视图中输入代码。

您可以尝试以下操作

在你看来:

因为它将逃避用户提交的大部分内容,并返回一条记录

我已经在您的控制器中分解了这些步骤,但您可以将它们组合成这样一个步骤:

def create
    @user = User.find(:first, :conditions => ["id = ?", session[:id]])
    @favorite = @user.favorites.create(:link_id => params[:link_id])
    redirect_to :back
end

希望这能起作用

你能发布链接的代码吗?你可以使用
链接到“收藏夹”、:controller=>:favorites、:action=>:create
并且不要向action传递任何
链接id
。因此,您会收到错误消息:此链接id传递应如何完成?我尝试了
link_到“Favorite”,:controller=>:favorites,:action=>:create,:link_id=>link.id
返回错误“找不到没有id的链接”。我被代码的第三行搞糊涂了。它的目的是什么?我想你的问题是在创建对象。这就是为什么分裂你的第二行。但你的问题真的在params.+1谢谢@Hishalv!当使用
更新属性
app/controllers/favorites_controller.rb:4:in []
app/controllers/favorites_controller.rb:4:in create
@user = User.find(session[:user_id])

@favorite = Favorite.create :link_id => params[:id]

@favorite.user = @user
throw params
<%= 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