我在用户表中有class ProductsDataPipeline(object):
""" Item pipeline for products data crawler """
def process_item(self, item, spider):
return item
和resources :users
。
我想使用custom_id
方法选择link_to "user", user
来提供与此字段的链接作为参数。
users_controller.rb 中的custom_id
次操作:
show
答案 0 :(得分:0)
更好的方法是通过to_param
方法来管理它,您可以在模型中定义。将模型实例传递给路径助手时,它会在其上调用此方法,默认情况下会返回该ID。您可以覆盖它以改为使用custom_id
。
#in User class
def to_param
self.custom_id
end
现在你可以说
link_to "user", user_path(@user)
它将生成类似
的html<a href="/users/<@user.custom_id>">user</a>
所以@ user.custom_id将在params[:id]
中出现。
您仍需要确保通过控制器中的自定义ID字段而不是id加载用户。一种常见的模式是将其放入控制器中的受保护方法中:
#in UsersController
protected
def load_user
@user = User.find(custom_id: params[:id])
end
现在您可以在加载@user的所有操作中说load_user
,或者将其放入相关操作的前置过滤器中,甚至是DRYer。
答案 1 :(得分:0)
在您的表单中您可以使用:
<%= link_to @user.name, @user %>
因为您已在UsersController中写过:
...
@user = User.find(custom_id: params[:id])
...