路由问题,rails生成错误的url

时间:2009-11-26 20:08:54

标签: ruby-on-rails ruby

首先,感恩节快乐。

所以我的问题是我的路线,我不清楚为什么id param实际上包含整个对象。 Rails给了我这个错误:

user_url failed to generate from {:action=>"show", :controller=>"users", :id=>#<User id: 19, username: "Dr. Dorothy Buckridge", email: "kyra@hansenstehr.ca", crypted_password: nil, password_salt: nil, persistence_token: nil, created_at: "2009-11-10 19:38:31", updated_at: "2009-11-10 19:38:31", perishable_token: "", color: nil>}, expected: {:action=>"show", :controller=>"users"}, diff: {:id=>#<User id: 19, username: "Dr. Dorothy Buckridge", email: "kyra@hansenstehr.ca", crypted_password: nil, password_salt: nil, persistence_token: nil, created_at: "2009-11-10 19:38:31", updated_at: "2009-11-10 19:38:31", perishable_token: "", color: nil>}

此行发生错误:

<%= link_to recipe.user.username, recipe.user, :class => "user" %>

任何想法?看起来它应该只为该属性生成对象的id

我的控制器是:

def index
  @recipes = Recipe.search params[:search], :field_weights => { :name => 20, :description => 10 }
end

无法真正看出问题所在。

2 个答案:

答案 0 :(得分:5)

您是否覆盖了User模型中的to_params或它继承的任何类?

你可以用这个强制id:

 <%= link_to recipe.user.username, user_url(recipe.user.id), :class => "user" %>

答案 1 :(得分:2)

这是一个疯狂的猜测,但当我在map.resource :user

中输入map.resources :users而不是routes.rb时,我遇到了类似的问题

否则验证 EmFi 的naswer。