Param in View not being set

Hello All,

I have :wsc_uid=>category[‘wsc_uid_pk’] in my view so
that I can use :wsc_uid parameter in my controller to pass to model. In my
view I am printing category[‘wsc_uid_pk’] to see if there is data,
and there is indeed data. So, why, when running debugger in controller, is
params[:wsc_uid] = nil? Does anyone know what I could be doing wrong?

Thank you,

Rachel S Nichol
Oracle
Developer
Hargray
Telephone Company

Where is :wsc_uid=>category['wsc_uid_pk'] in your view
Give us some more context and it may be easier to help

Regards

Andrew Timberlake
http://ramblingsonrails.com

http://MyMvelope.com - The SIMPLE way to manage your savings

To get a parameter submitted it should be put in a field (hidden if
necessary) on the form. Assuming you are submitting a form that is.
Alternatively if going via a link it can be put as a parameter to the
link. You need to give us a few more clues as to what you are doing.
We are not telepathic (at least I am not).

Colin

Yes. Thank you.

I have ...

<% @list_web_serv_cats.each do |category| %>
  <!-- some html stuff here -->
  <% form_tag({:controller => 'customers', :action => 'list_services_available_at_location', :wsc_uid=>category['wsc_uid_pk']}) do %>

   <%= category['wsc_uid_pk'] %> <!-- printing to view to verify data exists -->

   <%= select_tag(:wsc_uid, '<option value="">Select Type</option>' + options_for_select(@list_web_serv_types.collect{|servtype| [servtype['wbt_description'].to_s, servtype['wbt_uid_pk'].to_i]}, params[:id].to_i)) %>
<!-- @list_web_serv_types uses param[:wsc_uid] to bring data from model/db package call -->
   <% @list_web_serv_types.each do |servtype| %>
      <tr><td height="25px" align="left" valign="top" > <%= servtype['wbt_uid_pk'] %> <%= servtype['wbt_description'] %> </td></tr>
   <% end %> <!-- @list_web_serv_types.each end -->
<% end %> <!-- form_tag end -->
</td>
<!-- next column: service category subtypes -->
</tr>
<% end %> <!-- @list_web_serv_cats.each end -->

Thank you,
Rachel S Nichol
W: (843) 686-1223
F: (843) 341-0980

Hargray's mission: To envision and deliver customer delight

Hello All,

I have :wsc_uid=>category['wsc_uid_pk'] in my view so that I can use
:wsc_uid parameter in my controller to pass to model. In my view I am
printing category['wsc_uid_pk'] to see if there is data, and there is
indeed data. So, why, when running debugger in controller, is
params[:wsc_uid] = nil? Does anyone know what I could be doing wrong?

What is category['wsc_uid_pk'] ? You can't pass arbitrary objects
through a link like that.

Fred

I think you may be coming into trouble because of the use of a query
string element in the form action url as well as the form parameters.

Try
<% form_tag({:controller => 'customers', :action =>
'list_services_available_at_location'}) do %>
<%= hidden_field_tag 'wsc_uid_pk', category['wsc_uid_pk'] %>
...

Andrew Timberlake
http://ramblingsonrails.com

http://MyMvelope.com - The SIMPLE way to manage your savings

Sorry I did not provide more details. Another email has been sent with code snippet from view (and included below). Please pardon my incompleteness as I am very new to this type of development.

Is it okay to use a hidden field? I have seen talk of hidden fields in my Google searches but do not understand how to use it, but then, I have been focused on just assigning to the parameter. So, I will Google some more on hidden field and focus on how that is done.

I have ...

<% @list_web_serv_cats.each do |category| %>
  <!-- some html stuff here -->
  <% form_tag({:controller => 'customers', :action => 'list_services_available_at_location', :wsc_uid=>category['wsc_uid_pk']}) do %>

   <%= category['wsc_uid_pk'] %> <!-- printing to view to verify data exists -->

   <%= select_tag(:wsc_uid, '<option value="">Select Type</option>' + options_for_select(@list_web_serv_types.collect{|servtype| [servtype['wbt_description'].to_s, servtype['wbt_uid_pk'].to_i]}, params[:id].to_i)) %>
<!-- @list_web_serv_types uses param[:wsc_uid] to bring data from model/db package call -->
   <% @list_web_serv_types.each do |servtype| %>
      <tr><td height="25px" align="left" valign="top" > <%= servtype['wbt_uid_pk'] %> <%= servtype['wbt_description'] %> </td></tr>
   <% end %> <!-- @list_web_serv_types.each end --> <% end %> <!-- form_tag end --> </td>
<!-- next column: service category subtypes --> </tr> <% end %> <!-- @list_web_serv_cats.each end -->

Thank you,
Rachel S Nichol
Hargray's mission: To envision and deliver customer delight

Also your tr and td tags are all to pot. In addition a form cannot
span part of a table, it must either include the whole table or lie
entirely within one cell.

Paste your page source (from view page source in browser) into w3c
html validator to check that it is valid html.

Colin

Wow! I ran the w3c html validator and have many errors (just as you detected). Am in process of correcting those now.

Thank you so much. I had no idea a tool like this existed.

Thank you,
Rachel S Nichol
W: (843) 686-1223
F: (843) 341-0980

Hargray's mission: To envision and deliver customer delight

Hello All,

I have been working on dynamically filling the drop box some more and got it to work -- if I call the model directly from the view (code snippet below <%= select("wsc_uid"...)...).

Now, I know this is not correct. I resorted to doing it this way because when trying to pass category['wsc_uid_pk'] to the controller, via a param, a nil value is being passed - even though I can clearly see there is data for category['wsc_uid_pk'].

I tried Andrew's suggestion for hidden field tag but to no avail... the controller was still not seeing the data.

Can anyone please give me an idea of what I need to do to get this to work correctly between View - Controller - Model?

Code Snippet from View:

Is there anyone in this group that can give me a pointer on this?

Thank you,
Rachel S Nichol

Hargray's mission: To envision and deliver customer delight

There is no reason why you should not call model methods from the
view. To improve the modularity however I would suggest providing a
Customer model method called select_box_values or whatever conveys the
right impression to you when you read the code. This method contains
the code that you have in your select statement. Then instead of your
code Customer.list_......map{....} you just have
Customer.select_box_values. Make sure it always returns something
which will be valid in the view however (even in unusual conditions)
so that you do not need any logic in the view.

If you still wish to move this our of the view then in the controller
which invokes this view put
@select_box_values = Controller.select_box_values
and use @select_box_values in the view.

Colin

Thank you so much Colin. I really thought calling the model method from the view was not acceptable. I appreciate your input on this as I am still learning the framework and proper techniques.

Thank you,
Rachel S Nichol
W: (843) 686-1223
F: (843) 341-0980

Hargray's mission: To envision and deliver customer delight