Я использую Ruby 1.8.7 и Rails 2.3.5
Поэтому я пытаюсь выяснить, почему моя ассоциация has_many не работает должным образом.У меня есть 2 таблицы в базе данных, видео и комментарии.Внутри таблицы комментариев у меня есть внешний ключ столбца video_id, и при публикации комментария на странице моего видео ничего не отображается, поскольку столбец video_id имеет значение NULL, поэтому ничего не публикуется. Если я добавлю идентификатор видео в столбец video_id, выможете посмотреть комментарий.Я что-то упустил?
Video.rb
class Video < ActiveRecord::Base
has_many :comments
end
Comment.rb
class Comment < ActiveRecord::Base
belongs_to :video
end
comments_controller.rb
def create
@comment = Comment.new(params[:comment])
@comment.video_id = params[:video_id]
if @comment.save
flash[:notice] = 'Your comment was saved!'
else
flash[:notice] = 'Sorry, there was a problem.'
end
redirect_to videos_path
end
_form.html.erb
<% form_for :comment, :url => comments_path(@video) do |f| %>
<p>
<%= f.label :name, "Your Name" %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :body, "Your Comment" %>
<%= f.text_field :body %>
</p>
<p>
<%= f.submit "Submit", :disable_with => 'Submiting...' %>
</p>
<% end -%>
Routes.rb
ActionController::Routing::Routes.draw do |map|
map.index '/', :controller => 'homepage', :action => 'index'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
map.signout '/signout', :controller => 'sessions', :action => 'destroy'
map.login '/login', :controller => 'sessions', :action => 'new'
map.signin '/signin', :controller => 'sessions', :action => 'new'
map.register '/register', :controller => 'users', :action => 'create'
map.signup '/signup', :controller => 'users', :action => 'new'
map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil
map.resources :users
map.resource :session
map.resources :comments
map.resources :videos
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end