我创建了一个控制器配置文件
现在我在edit.html.erb和show.html.erb
<%= form_for @profile do |f| %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
所以,让我们说当用户更新表单时,永久链接将是:
profiles/:id/
但基本上我希望永久链接是这样的:
profiles/%username%
我希望它实际上就像一个&#34;我的个人资料&#34;控制器,用户应该只编辑他的个人资料,用户应该只有个人资料
答案 0 :(得分:3)
这很容易做到。我假设您在路由文件中使用resources
。您只需要告诉Rails您希望使用slug而不是id
来访问,更新和删除资源。
resources :profiles, param: :slug
现在,您的资源将通过slug
生成。在您的控制器中,为了访问单一资源,您可以这样做:
Profile.find_by_username(params[:slug])
答案 1 :(得分:1)
你的问题让你觉得你来自wordpress背景并且没有完全掌握Rails实际上是什么,所以如果是这样的话,你可能想要更多地学习Rails指南和找到一些Rails教程。但是,要回答您的问题,请在application_controller.rb中执行以下操作:
def profile_path(profile, options={})
profile_url(profile, options.merge(:only_path => true))
end
def profile_url(profile, options={})
url_for(options.merge(:controller => 'profiles', :action => 'show',
:id => profile.username))
end