[Rails] Re: Re: Re: Modelling Foreign Keys

d6veteran d6veteran at gmail.com
Sun Apr 2 04:32:51 GMT 2006


I'm really having a hard time implementing foreign keys and I find it
odd that Rails makes so many things easy, yet foreign keys don't seem to
be supported.  Maybe I am missing something.  Here's the revelant set up
info:

Table Test
  id
  title
  summary
  test_type_id
---------------------
Table Test_Type
  id
  type_name
---------------------
class Admin::TestController < Admin::BaseController
    scaffold :test
    def new
        @test = Test.new
        @test_type = TestType.find(:all)
    end
end
---------------------
class Admin::TestTypeController < Admin::BaseController
    scaffold :test_type

end
---------------------
class Test < ActiveRecord::Base
    has_many :questions
    has_many :logged_tests
    has_many :results
    belongs_to :test_type
    belongs_to :user
end
---------------------
class TestType < ActiveRecord::Base
    has_many :tests
end
---------------------
views/admin/test/new.rhtml

<html>
<body>

<%= start_form_tag :action => "create" %>
  <p>
    <label for="test_title">Title</label><br />
    <%= text_field_tag("test_title", nil, :size => "40") %></p>
  <p>
    <label for="test_summary">Summary</label><br />
    <%= text_area_tag("test_summary", nil, :size => "40x20") %>
  </p>
  <p>
    <%= select :test, :test_type,
options_from_collection_for_select(@test_types, "id", "type_name") %>
  </p>
  <p>
    <%= submit_tag(value = "Create New Test") %>
  </p>
<%= end_form_tag() %>

<a href="/admin/test/list">Back</a>
</body>
</html>
---------------------
error:

ActionView::TemplateError (undefined method `inject' for nil:NilClass)
on line #19 of app/views/admin/test/new.rhtml:
16:     <%= text_area_tag("test_summary", nil, :size => "40x20") %>
17:   </p>
18:   <p>
19:     <%= select :test, :test_type,
options_from_collection_for_select(@test_types, "id", "type_name") %>
20:   </p>
21:   <p>
22:     <%= submit_tag(value = "Create New Test") %>

    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/helpers/form_options_helper.rb:141:in
`options_from_collection_for_select'
    #{RAILS_ROOT}/app/views/admin/test/new.rhtml:19
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/base.rb:268:in
`send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/base.rb:268:in
`compile_and_render_template'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/base.rb:244:in
`render_template'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/base.rb:205:in
`render_file'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:655:in
`render_file'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:595:in
`render_with_no_layout'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/layout.rb:228:in
`render_with_a_layout'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:684:in
`render_with_layout'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:645:in
`render_action'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/scaffolding.rb:153:in
`render_scaffold'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/scaffolding.rb:117:in
`new'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in
`send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in
`perform_action_without_filters'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/filters.rb:332:in
`perform_action_without_benchmark'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in
`perform_action_without_rescue'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in
`measure'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:69:in
`perform_action_without_rescue'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/rescue.rb:82:in
`perform_action'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:369:in
`send'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:369:in
`process_without_session_management_support'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/session_management.rb:116:in
`process'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/dispatcher.rb:38:in
`dispatch'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/fcgi_handler.rb:141:in
`process_request'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/fcgi_handler.rb:53:in
`process!'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/fcgi_handler.rb:52:in
`each_cgi'
    /usr/lib/ruby/1.8/fcgi.rb:597:in `each'
    /usr/lib/ruby/1.8/fcgi.rb:597:in `each_cgi'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/fcgi_handler.rb:52:in
`process!'
    /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/fcgi_handler.rb:22:in
`process!'
    dispatch.fcgi:33


Any help appreciated.

-- 
Posted via http://www.ruby-forum.com/.


More information about the Rails mailing list