2016-06-28 57 views
0

所以在我的崗位控制器,我有Rails的:無法與「ID」 =指數

def index 
    @post = Post.all.order('created_at DESC') 
end 

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



private 
    def post_params 
     params.require(:post).permit(:title, :body) 
    end 

,並在我的.erb文件

<% @post.each do |post| %> 
      <h2 class="post_wrapper"> 
       <h2 class="title"><%= link_to post.title, post %></h2> 
       <p class="date"><%= post.created_at.strftime("%B, %d, %Y")</p> 
     <% end %> 

鏈接應該是找到帖子拿起6 in/posts/6,但我想這不是。

編輯:這是我的routes.rb

Rails.application.routes.draw do 
    resources :posts 
    root "index#index" 
end 

回答

2

要訪問您的index路線,您不應該去/posts/index而是/posts

的誤差可能發生,因爲

GET /posts/index將映射到/posts/:id,這將調用你posts_controller的表演動作。

運行rake routes看到你的應用程序的路徑映射

旁註:我不認爲你的變量命名是最好的。如果你有一個對象集合,我認爲它是有道理的稱爲它們,以避免混淆,而一個實例可能被稱爲@post

+0

我大多使用YouTube教程。這樣做的人並不是最好的,但我明白他在做什麼。感謝您的幫助! –

+0

訪問http:// localhost:3000/posts時會發生什麼? – oreoluwa

+0

它的工作。我有一些內聯錯誤,我覺得已經太遲了。 我通常很擅長命名我的變量,特別是他們需要的東西。剛剛到達,女朋友正在強調我一點點。 感謝您的幫助。這是很好的修復這些東西,並正確張貼:) 我upvoted你,但它說我太新手了。 –

1

我爲錯誤的答案抱歉:<%= link_to post.title, post_path(post) %>

我檢查,它工作。這個用法不是問題。我懷疑如果你繼續訪問/posts/index?如果是這樣,請不要訪問/posts並點擊鏈接。如果它的link_to方法會產生錯誤的url,請發佈它生成的html。

+1

雖然這可能會回答這個問題,但解釋一下會是一個好主意...您不覺得嗎? –

+0

@ThomasAyoub你是對的。非常遺憾。 – ShallmentMo

1

你調用Url錯誤,因此它採取'/ posts/index'。添加路徑告訴動作去哪裏,觀察post_path(後)

<% @post.each do |post| %> 
    <h2 class="post_wrapper"> 
    <h2 class="title"><%= link_to post.title, post_path(post) %></h2> 
    <p class="date"><%= post.created_at.strftime("%B, %d, %Y")</p> 
<% end %> 

檢查這些途徑獲取更多信息,您可以替代ID的發送oject太多,所以post_path(post)向您發佈詳細信息頁面

HTTPVerb Path   Controller#Action Named Helper 
GET   /posts   posts#index  posts_path 
GET   /posts/new  posts#new  new_post_path 
POST  /posts   posts#create  posts_path 
GET   /posts/:id  posts#show  post_path(:id) 
GET   /posts/:id/edit posts#edit  edit_post_path(:id) 
PATCH/PUT /posts/:id  posts#update post_path(:id) 
DELETE  /posts/:id  posts#destroy post_path(:id) 
+0

錯誤頁告訴我, def show \t \t @post = Post。找到(params [:id]) \t結束 錯誤在哪裏,我改變了它,但它仍然給我廢話。我很新的Rails,到目前爲止一直在使用它一個月 –

+0

添加routes.rb flie – Sravan

+0

我把它放在問題中。我有2個控制器,這是我目前正在開發的完整網站的博客控制器。 –