Ruby On Rails - Foreign Key Lookup

I have a one-to-many relationship between a 'file' and a 'directory'.  What I'd like is that in the 'file' scaffolding (maybe view is more appropriate?), a dropdown with all 'directory' listings.  I'm having a many-to-many issue, but I'm hoping that once I figure out one-to-many, I should be able to figure out many-to-many.

The best I can find on the internet show that I put a belongs_to in file model and a has_many in directory model.  How do I take it to the final step and create a dropdown that will allow me to assign directories to files?  

I assume that I modify the 'new' method in the file controller, but I'm having a hard time with syntax.  After modifying the controller, do I have to do anything to the view?

Any help is appreciated, or a website that outlines how to do this.  I have looked around on the web and can;t find anything that spells this out for me.  I'm not much of a programmer so I might not be assuming enough.



Who is Participating?
Geert BormansConnect With a Mentor Information ArchitectCommented:
Here is an example
(it is from my course, purchases and wine, but I assume you can easiy adapt it to your needs)

class Wine < ActiveRecord::Base
      has_many :purchases

class Purchase < ActiveRecord::Base
      belongs_to :wine

in the purchase_controller,  I have
  def edit
    @wines = Wine.find_all
    @purchase = Purchase.find(params[:id])
  def new
    @purchase =
    @wines = Wine.find_all

and in the purchase view for edit, I have
<h1>Editing purchase</h1>

<% form_tag :action => 'update', :id => @purchase do %>
  <p><select name="purchase[wine_id]">
        <% @wines.each do |wine| %>
              <option value="<%= %>"
                    <%= ' selected' if == @purchase.wine_id %>>
                    <%= %> -
                    <%= wine.sous_appel.to_str.length > 0 ? wine.sous_appel : wine.appelation %> -
                    <%= wine.year %>
        <% end %>
  <%= render :partial => 'form' %>
  <%= submit_tag 'Edit' %>
<% end %>

<%= link_to 'Show', :action => 'show', :id => @purchase %> |
<%= link_to 'Back', :action => 'list' %>

Here is where I create the dropdownlist
the, sous-appelation and year form the label,
the is hidden in the option value attribute

Since this is the edit operation, there already is a wine selected,
hence the "selected" attribute in the dropdownlist

I hope this helps you on your way



cmgtechAuthor Commented:
perfect.  you should start a blog of concise solutions to problems.
cmgtechAuthor Commented:
oh, and thanks so much.
Geert BormansInformation ArchitectCommented:
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.