Param in View not being set

5 views
Skip to first unread message

Rachel Nichol

unread,
Jun 18, 2009, 9:17:18 AM6/18/09
to rubyonra...@googlegroups.com

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

Andrew Timberlake

unread,
Jun 18, 2009, 9:28:52 AM6/18/09
to rubyonra...@googlegroups.com

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

Colin Law

unread,
Jun 18, 2009, 9:33:22 AM6/18/09
to rubyonra...@googlegroups.com
2009/6/18 Rachel Nichol <rachel...@htc.hargray.com>:

> 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?

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

Rachel Nichol

unread,
Jun 18, 2009, 9:38:13 AM6/18/09
to rubyonra...@googlegroups.com
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

Frederick Cheung

unread,
Jun 18, 2009, 9:38:50 AM6/18/09
to Ruby on Rails: Talk


On Jun 18, 2:17 pm, "Rachel Nichol" <rachel.nic...@htc.hargray.com>
wrote:
> 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

Andrew Timberlake

unread,
Jun 18, 2009, 9:44:38 AM6/18/09
to rubyonra...@googlegroups.com
On Thu, Jun 18, 2009 at 3:38 PM, Rachel
Nichol<rachel...@htc.hargray.com> wrote:
>
> 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
>

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'] %>
...

Rachel Nichol

unread,
Jun 18, 2009, 9:45:36 AM6/18/09
to rubyonra...@googlegroups.com
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


-----Original Message-----
From: rubyonra...@googlegroups.com [mailto:rubyonra...@googlegroups.com] On Behalf Of Colin Law
Sent: Thursday, June 18, 2009 9:33 AM
To: rubyonra...@googlegroups.com
Subject: [Rails] Re: Param in View not being set


Colin Law

unread,
Jun 18, 2009, 9:49:30 AM6/18/09
to rubyonra...@googlegroups.com
2009/6/18 Frederick Cheung <frederic...@gmail.com>:

>
>
>
> On Jun 18, 2:17 pm, "Rachel Nichol" <rachel.nic...@htc.hargray.com>
> wrote:
>> 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

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

Rachel Nichol

unread,
Jun 18, 2009, 9:58:00 AM6/18/09
to rubyonra...@googlegroups.com
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
Hargray's mission: To envision and deliver customer delight


-----Original Message-----
From: rubyonra...@googlegroups.com [mailto:rubyonra...@googlegroups.com] On Behalf Of Colin Law
Sent: Thursday, June 18, 2009 9:50 AM
To: rubyonra...@googlegroups.com
Subject: [Rails] Re: Param in View not being set


Rachel Nichol

unread,
Jun 25, 2009, 9:09:16 AM6/25/09
to rubyonra...@googlegroups.com
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:
-----------------------
<% @list_web_serv_cats.each do |category| %>
<tr><td height="25px" align="left" valign="top" > <%= category['wsc_description'] %></td>
<!-- added back below check box for html cleanup -->
<td height="25px" align="left" valign="top" style="display: inline;" ></td>
<!-- service category types -->
<!-- insert code here to dynamically fill the drop box from database based on category primary key -->
<td height="25px" align="left" valign="top" style="display: inline;" >
<!-- this works but it is not correct. i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->
<%= select("wsc_uid"+category['wsc_uid_pk'].to_s, "id", Customer.list_web_serv_types(category['wsc_uid_pk']).map {|u| [u['wbt_description'], u['wbt_uid_pk']]}) %>
<!-- this works but it is not correct. i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->
</td>
</tr>
<!-- next column: service category subtypes -->
<% end %>

Code Snippet from Model:
------------------------
def self.list_web_serv_types(wsc_uid_pk) # should be called from customers controller
ActiveRecord::Base.connection.select("SELECT gdt_number1 wbt_uid_pk,
gdt_number2 wbt_web_serv_cats_uid_fk,
gdt_alpha1 wbt_code,
gdt_alpha2 wbt_description
FROM TABLE (service_availability_web_pkg.fn_get_web_service_type(#{wsc_uid_pk}))")
end

Thank you,
Rachel S Nichol

Hargray's mission: To envision and deliver customer delight

-----Original Message-----
From: rubyonra...@googlegroups.com [mailto:rubyonra...@googlegroups.com] On Behalf Of Andrew Timberlake
Sent: Thursday, June 18, 2009 9:45 AM
To: rubyonra...@googlegroups.com
Subject: [Rails] Re: Param in View not being set


Rachel Nichol

unread,
Jun 26, 2009, 7:56:32 AM6/26/09
to rubyonra...@googlegroups.com
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

-----Original Message-----
From: Rachel Nichol
Sent: Thursday, June 25, 2009 9:09 AM
To: 'rubyonra...@googlegroups.com'
Subject: RE: [Rails] Re: Param in View not being set

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:
-----------------------
<% @list_web_serv_cats.each do |category| %>
<tr><td height="25px" align="left" valign="top" > <%= category['wsc_description'] %></td>
<!-- added back below check box for html cleanup -->
<td height="25px" align="left" valign="top" style="display: inline;" ></td>
<!-- service category types -->
<!-- insert code here to dynamically fill the drop box from database based on category primary key -->
<td height="25px" align="left" valign="top" style="display: inline;" >
<!-- this works but it is not correct. i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->
<%= select("wsc_uid"+category['wsc_uid_pk'].to_s, "id", Customer.list_web_serv_types(category['wsc_uid_pk']).map {|u| [u['wbt_description'], u['wbt_uid_pk']]}) %>
<!-- this works but it is not correct. i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->
</td>
</tr>
<!-- next column: service category subtypes -->
<% end %>

Code Snippet from Model:
------------------------
def self.list_web_serv_types(wsc_uid_pk) # should be called from customers controller
ActiveRecord::Base.connection.select("SELECT gdt_number1 wbt_uid_pk,
gdt_number2 wbt_web_serv_cats_uid_fk,
gdt_alpha1 wbt_code,
gdt_alpha2 wbt_description
FROM TABLE (service_availability_web_pkg.fn_get_web_service_type(#{wsc_uid_pk}))")
end

Thank you,
Rachel S Nichol

Hargray's mission: To envision and deliver customer delight

-----Original Message-----
From: rubyonra...@googlegroups.com [mailto:rubyonra...@googlegroups.com] On Behalf Of Andrew Timberlake
Sent: Thursday, June 18, 2009 9:45 AM
To: rubyonra...@googlegroups.com
Subject: [Rails] Re: Param in View not being set


Colin Law

unread,
Jun 26, 2009, 8:58:44 AM6/26/09
to rubyonra...@googlegroups.com
2009/6/26 Rachel Nichol <rachel...@htc.hargray.com>:

>
>    <!-- this works but it is not correct.  i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->
>    <%= select("wsc_uid"+category['wsc_uid_pk'].to_s, "id", Customer.list_web_serv_types(category['wsc_uid_pk']).map {|u| [u['wbt_description'], u['wbt_uid_pk']]}) %>
>    <!-- this works but it is not correct.  i should be passing category['wsc_uid_pk'] to controller and using controller to call model... -->

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

Rachel Nichol

unread,
Jun 26, 2009, 9:01:25 AM6/26/09
to rubyonra...@googlegroups.com
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


-----Original Message-----
From: rubyonra...@googlegroups.com [mailto:rubyonra...@googlegroups.com] On Behalf Of Colin Law
Sent: Friday, June 26, 2009 8:59 AM
To: rubyonra...@googlegroups.com
Subject: [Rails] Re: Param in View not being set


Reply all
Reply to author
Forward
0 new messages