我的表格如下:
<%= form_for [:admin, @post] do |f|%>
<div style="width:660px;">
<%= f.text_field :title, :size => 150 %>
<br/>
<%= f.text_area :body, :id => "body", :rows => 15 %>
<br/>
<%= f.submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
网址目前是:
http://localhost:3000/admin/posts/21/edit
Run Code Online (Sandbox Code Playgroud)
管理员编辑的我的佣金路线是:
edit_admin_post GET /admin/posts/:id/edit(.:format)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,edit_admin_post_path正在返回:
/admin/post/the-post-title/edit
Run Code Online (Sandbox Code Playgroud)
所以我手动将帖子标题更改为id.
当我执行更新时,我重定向:
if @post.update_attributes(params[:post])
redirect_to edit_admin_post_path @post
end
Run Code Online (Sandbox Code Playgroud)
但它再次使用'post-title'而不是id重定向.
为什么是这样?
这是铁轨3
注意:
对于show url,我想/ post/my-post-title而不是/ post/234所以我不确定我在哪里更改了b/c我在我的代码中看不到它的引用!
听起来你的帖子模型中定义了这些内容:
class Post < ActiveRecord::Base
def to_param
#{name}"
end
Run Code Online (Sandbox Code Playgroud)
这将导致它只返回名称而不是ID.删除您在帖子模型中定义的所有to_params,看看是否能解决它.
将其更改为以下内容:
def to_param
"#{id}-#{name}".downcase.gsub(/\W+/, "-").gsub(/^[-]+|[-]$/,"").strip
end
Run Code Online (Sandbox Code Playgroud)
这将为您提供相当干净的URL,例如:http:// localhost:3000/admin/posts/21-my-post-title/edit和Post.find(21-my-post-title)的工作方式相同,基本上,作为Post.find(21).
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |