みんなありがとう。私は問題を解決しました。それは私がposts/new
ページに入ったときだからです。@post
新しいアクションは、 nil属性を持つダミーを作成します。が@post
存在するため、サイドバーに編集と削除のリンクが表示されます。ただし、はであるため、はedit_post_path
機能しません。その後、エラーが発生します。だから私はちょうどに変更し、それは動作します。--psrailsエラーメッセージは非常に紛らわしいです。@post.id
nil
<% 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が教えてください。
ありがとうございました!
更新
_sidebar.html.erbを追加します(形式については申し訳ありませんが、元の状態に保つ方法を確認してください。通常の、、
nav
タグul
がli
外部にあります)- <%= 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"%> <%終了%>
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 %>
私は試し
app.new_post_path
ました、それは示しています/posts/new
、私はそれが良いと思います。