Listboxes in forms



I have a form with a set of fields. All these fields belong to a table
called Textmaze. One of the form fields is a list box. This list box
gets it’s values from an existing table called Scenario in the
database. On submission of the form, it should create a record in a
table. Connection between these two tables looks like this:

class Textmaze < ActiveRecord::Base
belongs_to :starting_scenario,
:class_name => “Scenario”,
:foreign_key => “starting_scenario”


My form code looks like this:

 <select id="textmaze_starting_scenario" 

<% @scenarios.each do |scenario| %>

<%= scenario.title %>

<% end %>

When I submit the form I get an error saying “Scenario expected, got

Instead of I tried supplying the id
of the Scenario record but even that doesn’t seem to work. What could
be wrong?

How can I get reference to another table’s record into my table?



I think you better use the built in select_option method from Ruby On
Rails. If you would have in your text_maze_controller.rb something like

def ‘edit’
@textmaze = Textmaze.find(params[:id])
@scenarios = Scenario.find(:all)

then you can use in your _form.rhtml view of your Textmaze something
like this:


It helps to keep the view clean. This answer comes from a ROR user for
four evenings.

Best regards,

Mark N.


From your description, it seems the problem is in the form action
method inside your controller. By the way, yes, you should code the
option value as . This will provide
the key for doing a find on Scenario.

The error is saying you supplied a string, rather an instance of
Scenario, probably as a parameter to something. I would check your code
that deals with Scenario. If you get stuck post the code up here.