我的Forum
有很多Topic
个。我的路线如下:
GET /forums/:forum_id/topics/new => Topics#new
POST /topics => Topics#create
这是我的问题开始的地方:
= form_for @topic do |topic_form|
此表单映射到POST /topics
路由。必须提供forum_id
才能保存主题。它可用于new
操作,但我找不到任何方法将其传递给create
操作。
我尝试将路线更改为:
GET /forums/:forum_id/topics/new => Topics#new
POST /forums/:forum_id/topics => Topics#create
但现在forum_id
最终超出了主题参数hash:
{ topic: { title: "Test" }, commit: "Create Topic", forum_id: 1 }
如何解决这个问题?
答案 0 :(得分:2)
我认为最合适的方法是像第二个例子中那样路由它。然后在创建操作中,您可以首先实例化论坛以确保它有效,然后从论坛创建主题。它可能看起来像这样:
def create
@forum = Forum.find(params[:forum_id])
@topic = @forum.topics.new(params[:topic])
if @topic.save
...
else
...
end
end
这假定您的论坛模型has_many:topics