2011-02-15 2 views
0

Ma forme ressemble:Pourquoi le formulaire est-il publié dans la mauvaise URL?

<%= 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 %> 

l'URL est actuellement:

http://localhost:3000/admin/posts/21/edit 

mes routes râteau pour le montage post admin est:

edit_admin_post GET /admin/posts/:id/edit(.:format) 

pour une raison quelconque le edit_admin_post_path revient :

/admin/post/the-post-title/edit 

alors j'ai manuellement changé le titre du poste à l'id.

quand j'effectue la mise à jour, je redirect:

if @post.update_attributes(params[:post]) 
     redirect_to edit_admin_post_path @post 
    end 

Mais encore une fois, il réoriente le « post-titre » au lieu de l'identifiant.

pourquoi est-ce?

c'est rails 3

REMARQUE:

Pour l'url show, je voulais/après/mon post-titre et non/post/234, donc je ne sais pas où je l'ai changé que b/c je ne vois aucune référence pour cela dans mon code!

+1

je voudrais juste commenter, s'il vous plaît ne pas utiliser les styles en ligne dans votre code :) – corroded

Répondre

5

Il semble que vous avez quelque chose le long de ces lignes définies dans votre modèle post:

class Post < ActiveRecord::Base 

def to_param 
    #{name}" 
end 

Cela lui fera revenir juste le nom au lieu de l'ID. Supprimez les to_params que vous avez définis dans votre modèle de message et voyez si cela résout le problème.

changer pour quelque chose comme ceci:

def to_param 
    "#{id}-#{name}".downcase.gsub(/\W+/, "-").gsub(/^[-]+|[-]$/,"").strip 
end 

Cela vous donnera des URL assez propres, telles que: http://localhost:3000/admin/posts/21-my-post-title/edit et Post.find (21-my post-titre) fonctionne de la même, essentiellement, comme Post.find (21).

+0

oui vous l'avez man! cela signifie que je dois appeler manuellement .parameterize chaque fois pour obtenir des URLs amicales de mes titres/noms? – Blankman

Questions connexes