2012-12-08 61 views
1

我使用ruby在rails上创建了一个留言板站点。我生成了两个支架:TopicForumTopic belongs_to ForumRails - 传递对象的ID

当用户正在创建一个新话题时,我应该通过forum_id(一个GET var)。例如:
http://example.com:3000/topics/new/1

然后,当用户提交表单时,他会通过POST请求(通过隐藏的html字段?)传回forum_id。

这样做的正确方法是什么?
感谢

路线:

resources :forums 

    get "admin/index" 

    resources :posts 

    resources :topics 

    resources :users 

    match '/signup', :to => 'users#new' 

    get '/login', :to => 'sessions#new', :as => :login 
    match '/auth/:provider/callback', :to => 'sessions#create' 
    match '/auth/failure', :to => 'sessions#failure' 

    match '/topics/new/:id', :to => 'topics#new' 
+1

这取决于你的路线配置,请你张贴吗? –

回答

2

一个好方法里面做forums资源是嵌套topics资源是这样的:

resources :forums do 
    resources :topics 
end 
在TopicsController

然后

class TopicsController < ApplicationController 
    def new 
    @forum = Forum.find params[:forum_id] 
    @topic = Topic.new 
    end 

    def create 
    @forum = Forum.find params[:forum_id] # See the redundancy? Consider using before_filters 
    @topic = @forum.topics.build params[:topic] 

    if @topic.save 
     redirect_to @topic 
    else 
     render action: :new 
    end 
    end 
end 

和鳍盟友在你的意见/主题/ _form.html.erb:

<%= form_for [@forum, @topic] do |f| %> 
    # Your fields 
<% end %>