1

ruby on railsで掲示板サイトを作っています。
と の 2 つの足場を生成TopicForumました。Topic所属先Forum

ユーザーが新しいトピックを作成するときは、forum_id (GET 変数) を渡す必要があります。のようなもの:
http://example.com:3000/topics/new/1

次に、ユーザーがフォームを送信すると、POST リクエストで forum_id を返します (非表示の html フィールドを介して?)。

それを行う正しい方法は何ですか?
ありがとう

ルート:

  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'
4

1 に答える 1

2

これを行う良い方法は、次のようにtopicsリソース内にforumsリソースをネストすることです。

resources :forums do
  resources :topics
end

次に、トピックコントローラーで

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

最後に、views/topics/_form.html.erb で:

<%= form_for [@forum, @topic] do |f| %>
  # Your fields
<% end %>
于 2012-12-08T14:35:43.720 に答える