我有兩種型號:Boards
和Topics
。我希望能夠將Topics
添加到Boards
。我的嵌套的資源有:參數丟失或值爲空
resources :boards do
resources :topics
end
我的董事會#秀「行動:
def show
@board = Board.find(params[:id])
@new_topics = Topic.all
end
其中列出了所有帖子,並具有link_to
:
<ul>
<%@new_topics.each do |i|%>
<li><%=i.title%> <%=link_to "Add", board_topic_path(@board,i), :method=> :put%></li>
<%end%>
</ul>
我還使用strong_params爲我的Boards
和Topics
控制器如下:
boards_controller:
def update
@board = Board.find(params[:board_id])
@topic = Topic.find(params[:id])
if @board.update(board_params)
flash[:notice] = "Added!"
@board.topics << @topic
redirect_to boards_path
else
flash[:alert] = "Problem!"
redirect_to boards_path
end
end
...
private
def board_params
params.require(:board).permit(:name,:description)
end
topics_controller:
...
private
def topic_params
params.require(:topic).permit(:title,:body,:user_id)
end
錯誤消息我得到:參數是丟失或爲空值:話題。
整個設置是錯誤的。你用'put'方法的鏈接不會傳遞任何'topic'查詢參數。這就是爲什麼你會得到這個錯誤。除此之外,該鏈接應該與'board_topic_path(@board,i)'相反。但是,這仍然不能解決你的問題。 模型設計錯誤。你假設你的資源中的主題屬於董事會,但我看到你的控制器用'Topic.all'加載主題,這意味着這些主題是獨立存在的,並且它們不屬於主板。你需要重新考慮你的設計我的朋友。 – 2014-12-11 05:50:05
已經嘗試交換link_to中的兩個變量。沒有幫助。我的'controller#show' action將所有主題列爲'Topic.all',並且它們在這裏存在,因爲我希望能夠看到所有主題的列表,並且能夠將它們添加到當前的主板, @ board.topics << @ topic',由'link_to'觸發。你的建議是什麼? – 2014-12-11 06:00:42