问题描述
<%= form_for [current_user,@task] do |f| %>
给出了users/:id/tasks
,但是我在使用时需要users/:slug/tasks
:
resources :users,param: :slug do
resources :tasks,only: [:index,:new,:create]
end
但如果我使用:
<%= form_for [current_user.slug,@task] do |f| %>
我得到:NoMethodError: undefined method 'jemelle_visits_path' for
如何获取users/jemelle/tasks
呢?
解决方法
我认为您需要重写模型的to_param
方法:
https://apidock.com/rails/ActiveRecord/Base/to_param
user = User.find_by_name('Phusion') user_path(user) # => "/users/1"
您可以在模型中覆盖to_param,以使user_path使用用户名而不是用户ID来构建路径:
class User < ActiveRecord::Base def to_param # overridden name end end user = User.find_by_name('Phusion') user_path(user) # => "/users/Phusion"