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

  1. 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 %>
    • <% si signed_in? %>

    • <%= link_to "New Post", new_post_path %>
    • <% si @poste, %>

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

  2. 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 %>

  3. J'ai essayé app.new_post_path, il montre /posts/new, je suppose que c'est bon.

ajouter plus de détails ou copie de votre fichier de vue plz
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