2016-05-17 109 views
0

編輯:我找到了一個類似的線程,我很抱歉無法找到它。從這個線程遵循建議:如何鏈接到一個簡單的Rails博客的索引頁的edit_post_path?

How to route from a nested resource in rails? Getting 'ActiveRecord::RecordNotFound in UsersController#show'

EDIT2:唉唉,我發現這個類似的線程:

這是因爲<%=的link_to 「編輯」 中,edit_game_path(: id)%>調用佈局模板。這是錯誤的地方。如果您正在查看/遊戲,則無法編輯,因爲沒有:id存在。

gotcha。我需要做一個find_id方法嗎?將保持這個答案更新


我沿着一個基本的Rails教程以下爲

我已經在posts_controller定義的編輯和更新功能博客:

高清編輯
@post = Post.find(params [:id])
end

def update
@post = Post.find(PARAMS [:ID])

if @post.update(params[:post].permit(:title, :body)) 
     redirect_to @post 
    else 
     render 'edit' 
    end 

,並在顯示頁面鏈接到edit_path(本地主機:3000 /帖/ 1)工作得很好(它關係到http://localhost:3000/posts/1/edit):

但是當我把同樣的代碼在索引頁面中的每個帖子下方,鏈接它會嘗試redirec噸至是

http://localhost:3000/posts/%23%3CPost::ActiveRecord_Relation:0xd0a2518%3E/edit

所以顯然有一個與它抓住了正確的ID的問題。而不是%23%3CPost :: ActiveRecord_Relation:0xd0a2518%3E,它應該只抓取要編輯的帖子的ID。

這可能是一個非常簡單的解決方法,但正如你可以告訴我是相當新的。提前致謝。哦,還有人可以解釋「參數」來自哪裏?我怎麼沒有定義這個?我在posts_controller的專用部分中定義了post_params,但什麼是params?也許我會只是谷歌。迷茫什麼:

如果@ post.update(PARAMS [:帖] .permit(:標題:體))

實際意義。我知道這是一個布爾值,不管它是否更新,但不知道更新的參數是什麼。提前致謝!

回答

0

如果您從數據庫中提取以前的遊戲,則可以在show動作中編輯遊戲。

當你展示遊戲/ s的渲染每場比賽

def index 
@game = Game.all 
end 

這遍歷所有的遊戲和使用遊戲的模板或局部使他們所有。 (查看/遊戲/ _game.erb)

每個遊戲都知道自己的ID。所以你所要做的就是在部分內部調用edit_path

edit_game_path(@game) 

它會帶你進入該特定遊戲的編輯頁面。