首先,感恩节快乐。
所以我的问题是我的路线,我不清楚为什么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
无法真正看出问题所在。
答案 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。