3

みんなありがとう。私は問題を解決しました。それは私がposts/newページに入ったときだからです。@post新しいアクションは、 nil属性を持つダミーを作成します。が@post存在するため、サイドバーに編集と削除のリンクが表示されます。ただし、はであるため、はedit_post_path機能しません。その後、エラーが発生します。だから私はちょうどに変更し、それは動作します。--psrailsエラーメッセージは非常に紛らわしいです。@post.idnil<% if @post %><% if @post && !@post.id.nil? %>

Railsを初めて使用し、簡単なアプリを作成したところ、リンクをクリックして新しい投稿を作成するとエラーが発生しました。
No route matches {:action=>"edit", :controller=>"posts"}

rake routes結果:

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

ルート.rbファイルに含まresources :postsれています。

リンクは:<li><%= link_to "New Post", new_post_path %></li>

の新しい&編集メソッドPostsController

  def new
    @post = Post.new
  end
  def edit
    @post = Post.find(params[:id])
  end

投稿を表示したり、編集したり、削除したりできます。しかし、リンクをクリックして新しい投稿を作成しようとすると、エラーが発生します。なぜnew_post_path意志が「編集」パスにつながるのか理解できませんか????

誰かがこれを手伝ってくれませんか?より多くのコードが必要な場合は、plzが教えてください。

ありがとうございました!

更新

  1. _sidebar.html.erbを追加します(形式については申し訳ありませんが、元の状態に保つ方法を確認してください。通常の、、navタグulli外部にあります)

    • <%= link_to "Home"、root_path%>
    • <%= link_to "About Me"、about_path%>
    • <signed_inの場合は%?%>
    • <%= link_to "新しい投稿"、new_post_path%>
    • <%if @post%>
    • <%= link_to "投稿の編集"、edit_post_path%>
    • <%= link_to "投稿の削除"、post_path(@post)、メソッド: "削除"、確認: "削除してもよろしいですか?" %>
    • <%終了%>
    • <%= link_to "Sign Out"、chulai_path、method: "delete"%>
    • <%終了%>

  2. new.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. 私は試しapp.new_post_pathました、それは示しています/posts/new、私はそれが良いと思います。

4

2 に答える 2

7

おそらく投稿で使用edit_post_pathしているでしょう。編集投稿の ID が渡されていないため、new.html.erb不平を言っています。no route matchesしかし、それはそもそもビューに表示されるべきではないnewため、おそらくその行を削除する必要があります-投稿を編集するため

于 2013-03-15T09:02:41.933 に答える
0

これを試して、

edit_post_path(@post)
于 2013-03-15T10:00:56.267 に答える