How to copy a selected value into a text_field

In app\views\expenses\new.html.erb, I (mistakenly) replaced the script/generated: <%= f.label :vendor %><br /> <%= f.text_field :vendor %> with: <%= f.label :vendor %><br /> <% @current_vendors = Vendor.find(:all, :order=>"nickname") %> <%= select_tag "list", options_for_select(@current_vendors) %>

This (if I haven't introduced any typos here) works fine, except that the user-selection doesn't really populate the database's vendors column in the expense record.

How do I repair this situation? I'd like to restore the the original text field and somehow populate it with the user-selected value from the select control.

RichardOnRails wrote:

In app\views\expenses\new.html.erb, I (mistakenly) replaced the script/generated: <%= f.label :vendor %><br /> <%= f.text_field :vendor %> with: <%= f.label :vendor %><br /> <% @current_vendors = Vendor.find(:all, :order=>"nickname") %> <%= select_tag "list", options_for_select(@current_vendors) %>

This (if I haven't introduced any typos here) works fine, except that the user-selection doesn't really populate the database's vendors column in the expense record.

How do I repair this situation? I'd like to restore the the original text field and somehow populate it with the user-selected value from the select control.

Hi,    try this <%= select_tag "expense_vendor", options_for_select(@current_vendors) %>.

hi RichardOnRails

Try this

<%= select_tag 'expense[vendor]', options_for_select(@current_vendors) %>

cheers, sameera

PRiyanka and sameera: Thank you both very much!!! I've been pulling my hair out for about a week with this thing.

I didn't realize that the first argument of the select_tag function apparently identifies the target of the selected item in the format "table_name[column_name]".

Now that you've given me this solution, I have to try to implement what seems to me to by the more proper architecture for the Expense/ Vendor relationship, namely have the drop-down populate a hidden text field (representing a expense-table column "vendor_id") and have the vendor name displayed in the expense page but be merely non-editable data not stored in the database. Probably a "has" clause would come into play here.

I'm going to take a stab at this, run into a blank wall again, and finally post a more thoughtfully worded question.

Best wishes, Richard

Hey, Priyanka and Sameera,

I've thought about design I'm aiming for and realized that I can accomplish it in a very straight-forward way.

Again, thanks for your great solution to my original problem.

Best wishes, Richard

PRiyanka and sameera: Thank you both very much!!! I've been pulling my hair out for about a week with this thing.

I didn't realize that the first argument of the select_tag function apparently identifies the target of the selected item in the format "table_name[column_name]".

you could have dodged that if you'd gone with f.select :vendor, choices The second parameter to f.select has the same requirements as what you give to options_for_select

Fred

Hi Frederick,

Thanks for your additional help with a simpler solution. I tried to replace my select_tag approach with the f.select approach:

    <%= f.select :vendor, @current_vendors %>     <%# = select_tag "expense[vendor]",       options_for_select(@current_vendors) %>

1. The f.select :vendor provided the drop-down control, but selecting an item did not populate the vendor text control, as the former solution did, some I'm sure I misunderstand your intent. 2. I haven't found documentation for the precise thing you recommended, but I'm hopeful I'll have some luck with http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html and/or http://guides.rubyonrails.org/form_helpers.html when I get time for careful study.

Best wishes, Richard

It's just a drop down box - it's not going to do anything to any other control on the page - just pointing out that you don't need to use select_tag when you have a form builder handing around.

Fred

Hi Fred,

I employed your code and it looks/works great. I could swear my old code populated an adjacent text-box, but I must have been hallucinating.

Thank for you additional post which jump-started my effort for neater code.

Best wishes, Richard