Rails sans itinéraire correspond à
Merci les gars. J'ai résolu le problème. C'est parce que quand je rentre dans le posts/new
page. La nouvelle action crée un mannequin @post
à néant les attributs. Depuis le @post
existe, le modifier & supprimer le lien dans la barre latérale s'affiche. Cependant, la edit_post_path
ne fonctionne pas car la @post.id
est nil
. Ensuite, l'erreur se produit. Alors j'ai juste changé <% if @post %>
à <% if @post && [email protected]? %>
et il fonctionne. - p.s. Les rails message d'erreur est assez déroutant.
Je suis nouveau sur les rails et vient de construire une application simple et vu le message d'erreur quand je clique sur un lien pour créer un nouveau poste de:
No route matches {:action=>"edit", :controller=>"posts"}
La rake routes
résultat:
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
Les routes.rb fichier a resources :posts
.
Le lien est : <li><%= link_to "New Post", new_post_path %></li>
La nouvelle & modifier la méthode de PostsController
:
def new
@post = Post.new
end
def edit
@post = Post.find(params[:id])
end
Je peux montrer l'afficher, d'éditer le post et supprimer le post. Mais chaque fois que je veux cliquer sur le lien pour créer un nouveau message, l'erreur se produit. Je ne peux pas comprendre pourquoi le new_post_path
sera conduit à "modifier" chemin d'accès????
Quelqu'un pourrait-il m'aider? Si vous avez besoin de plus de codes plz me dire.
Merci!
MISES à jour
-
Ajouter le _sidebar.html.erb (désolé pour le format, idk comment les conserver qu'à l'origine, il y a quelques normal
nav
,ul
,li
balises à l'extérieur)- <%= link_to "à la Maison", root_path %>
- <%= link_to "à Propos de Moi", about_path %>
- <%= link_to "New Post", new_post_path %>
- <%= link_to "Éditer le Post", edit_post_path %>
- <%= link_to "Suppression de Poste", post_path(@poste), de la méthode: "supprimer", confirme: "Êtes-vous sûr de vouloir supprimer?" %>
- <%= link_to "Sign Out", chulai_path, de la méthode: "supprimer" %>
<% si signed_in? %>
<% si @poste, %>
<% %>
<% %>
-
La nouvelle.html.erb
<%= form_for @post do |f| %>
<div class="field">
<%= f.text_field :title %>
</div>
<div class="field"> <%= f.text_area :content, placeholder: "new post here..." %> </div> <div class="field"> <%= f.select :public, [['Public', true], ['Private', false]] %> </div> <%= f.submit "Post", class: "btn" %>
<% end %>
-
J'ai essayé
app.new_post_path
, il montre/posts/new
, je suppose que c'est bon.
En fait le problème est avec _form.html.erb. merci d'ajouter ce fichier également.
Je suis d'accord. Aussi, merci de poster un nouveau.html.erb, pour juste au cas clair du tout
Mettre
app.new_post_path
dans votre console et voir ce qu'il vous donne. Si il vous donne un chemin d'accès pour le modifier, puis le problème est dans votre routage quelque part. Si elle vous donne la bonne route, des commandes/de nouveau, alors vous pourriez avoir de problème de cache.En fait, l'erreur que vous dites à propos edit_post_path , n'est pas correcte, il devrait être edit_post_path(@post), c'est pourquoi il s'en est plaint et a montré l'erreur, et @poste.id = nil erreur apparaît pour supprimer les post - post_path(@poste). Mais la réponse est la même à utiliser [email protected]éant?
OriginalL'auteur Yuli | 2013-03-15
Vous devez vous connecter pour publier un commentaire.
Vous êtes probablement en utilisant
edit_post_path
dans votrenew.html.erb
pour les postes.Il se plaint d'
no route matches
que vous n'avez pas transmis id de modifier le post. Mais cela ne devrait pas être dansnew
vue à la première place, alors vous avez probablement besoin de supprimer cette ligne pour l'édition de postqu'avez-vous voulu dire par "éditer le post ne seront venir après" ? Ce qu'il deviendra après? Et s'il est à l'aide de edit_post_path(@poste) dans son nouveau point de vue?
S'il est d'utiliser quelque chose comme
form_for @post, edit_post_path
dans son nouveau point de vue, alors il est fait pour après se soumettre, mais puisque vous n'avez pas soumis le formulaire, encore, son inutile à ce point que l'OP est d'avoir d'erreur en raison de la forme.oui, mais il n'est probablement pas à l'utiliser 🙂 ok, j'ai compris qu'il est inutile d'en débattre avant qu'il poste son _form_html.erb fichier ou nouveau.html.erb, s'il est d'utiliser le tout dans un seul fichier.
oui, alors c'est quoi que vous avez posté est inutile ici.
OriginalL'auteur Aleks
essayer cela,
No route matches {:action=>"edit", :controller=>"posts", :id=>#<Post id: nil, title: nil, content: nil, public: nil, created_at: nil, updated_at: nil>}
OriginalL'auteur Ganesh Kunwar