The :id symbol

hi,all

recently,i use the :id to pass parameter between of controllers or
actions.

but,when i wanna use the

“options_from_collection_for_select($cache_keshi,:id,:title)”

it is error cos the array variable($cache_keshi) has the column which
is primary key in the tabel,and the name is the same as the parameter
symbol in url route( /:controller/:action/:id).

is there any better idea to slove the problem?

btw,i have tried the quoted literal “id”,it doesnt work also.

thanks

On 18 Mar 2008, at 16:37, Vincent.Z wrote:

it is error cos the array variable($cache_keshi) has the column which
is primary key in the tabel,and the name is the same as the parameter
symbol in url route( /:controller/:action/:id).

That shouldn’t be a problem - i’ve done that loads of times. (oh and
you do know that $cache_keshi means ‘global varible in ruby’).
If you can expand a little more on what you are doing and what is
going wrong I’m sure someone can point you in the right direction.

Fred

the error is a bit strange

“stack level” would tell you, that some method
is called recursively over and over again,
until ruby runs out of stack.

i can’t see any reason for this here,
but may be found in the model
(difficult to find error, but maybe that’s of help)

oh,sorry to my omit.

when i use the "
options_from_collection_for_select($cache_keshi,:id,:title)"

it always prompt the error as following:

stack level too deep

Extracted source (around line #14):

11:


12:
13:

14: <%=select_tag “e$B2Je(B
e$B<<!'e(B”,options_from_collection_for_select($cache_keshi,:id,:title)%>
15: <% puts $cache_keshi%>
16:

17:

but, when i change the :id to other column,such as :title.

options_from_collection_for_select($cache_keshi,:title,:title)

it works fine.

i just dont know why the :id symbol doesnt work.

thanks again.

On 18 Mar 2008, at 17:25, Vincent.Z wrote:

this is the details of error:

Showing shared/_top.html.erb where line #14 raised:

I’m going to go out on a limb and say it’s because you’re using a
global variable. WHen you load the page the second time, the global
variable is still hanging onto the old class that was destroyed by the
class reloading that happens after request, and so bad stuff happens.

Fred.

this is the details of error:

Showing shared/_top.html.erb where line #14 raised:

stack level too deep

Extracted source (around line #14):

11:


12:
13:

14: <%=select_tag “e$B2Je(B
e$B<<!'e(B”,options_from_collection_for_select($cache_keshi,:id,:title)%>
15: <% puts $cache_keshi%>
16:

17:

Trace of template inclusion: /layouts/application.html.erb

RAILS_ROOT: D:/ror_app/doctor

Application Trace | Framework Trace | Full Trace
c:/ruby/lib/ruby/1.8/set.rb:89:in empty?' c:/ruby/lib/ruby/gems/1.8/ gems/activerecord-2.0.2/lib/active_record/attribute_methods.rb:56:ingenerated_methods?’ c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/
lib/active_record/attribute_methods.rb:186:in method_missing' c:/ruby/ lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ attribute_methods.rb:194:inmethod_missing’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb:
181:in send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_view/helpers/form_options_helper.rb:181:inoptions_from_collection_for_select’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb:180:in
map' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/ helpers/form_options_helper.rb:180:inoptions_from_collection_for_select’ app/views/shared/_top.html.erb:
14:in _run_erb_47app47views47shared47_top46html46erb' app/views/ layouts/application.html.erb:1:in_run_erb_47app47views47layouts47application46html46erb’ -e:2:in
load'-e:2 c:/ruby/lib/ruby/1.8/set.rb:89:inempty?’ c:/ruby/lib/ruby/gems/1.8/
gems/activerecord-2.0.2/lib/active_record/attribute_methods.rb:56:in
generated_methods?' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/ lib/active_record/attribute_methods.rb:186:inmethod_missing’ c:/ruby/
lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/
attribute_methods.rb:194:in method_missing' c:/ruby/lib/ruby/gems/1.8/ gems/actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb: 181:insend’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/helpers/form_options_helper.rb:181:in
options_from_collection_for_select' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb:180:inmap’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/
helpers/form_options_helper.rb:180:in
options_from_collection_for_select' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:637:insend’ c:/ruby/lib/
ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:in
compile_and_render_template' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:365:inrender_template’ c:/
ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:
316:in render_file' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/ lib/action_view/base.rb:331:inrender’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_view/partials.rb:117:in render_partial' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ benchmarking.rb:26:inbenchmark’ c:/ruby/lib/ruby/1.8/benchmark.rb:
293:in measure' c:/ruby/lib/ruby/1.8/benchmark.rb:307:inrealtime’
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
benchmarking.rb:26:in benchmark' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/partials.rb:116:inrender_partial’
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/
base.rb:352:in render' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:637:insend’ c:/ruby/lib/
ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:in
compile_and_render_template' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:365:inrender_template’ c:/
ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:
316:in render_file' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/ lib/action_controller/layout.rb:268:inrender_without_benchmark’ c:/
ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
benchmarking.rb:51:in render' c:/ruby/lib/ruby/1.8/benchmark.rb: 293:inmeasure’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/benchmarking.rb:51:in render' c:/ruby/lib/ruby/gems/ 1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:1153:indefault_render’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:1159:in perform_action_without_filters' c:/ ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/ filters.rb:697:incall_filters’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/filters.rb:689:in
perform_action_without_benchmark' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:68:inperform_action_without_rescue’ c:/ruby/lib/ruby/1.8/benchmark.rb:
293:in measure' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/benchmarking.rb:68:inperform_action_without_rescue’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/rescue.rb:199:in
perform_action_without_caching' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/caching.rb:678:inperform_action’ c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/
active_record/connection_adapters/abstract/query_cache.rb:33:in
cache' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/ active_record/query_cache.rb:8:incache’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_controller/caching.rb:677:in
perform_action' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/base.rb:524:insend’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/base.rb:524:in
process_without_filters' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/filters.rb:685:inprocess_without_session_management_support’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_controller/session_management.rb:
123:in process' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/base.rb:388:inprocess’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:171:in
handle_request' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/dispatcher.rb:115:indispatch’ c:/ruby/lib/ruby/
gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:
126:in dispatch_cgi' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/ lib/action_controller/dispatcher.rb:9:indispatch’ c:/ruby/lib/ruby/
gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:112:in
handle_dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/ webrick_server.rb:78:inservice’ c:/ruby/lib/ruby/1.8/webrick/
httpserver.rb:104:in service' c:/ruby/lib/ruby/1.8/webrick/ httpserver.rb:65:inrun’ c:/ruby/lib/ruby/1.8/webrick/server.rb:
173:in start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:162:instart’ c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in start_thread' c:/ruby/lib/ruby/1.8/webrick/server.rb:95:instart’ c:/ruby/lib/ruby/
1.8/webrick/server.rb:92:in each' c:/ruby/lib/ruby/1.8/webrick/ server.rb:92:instart’ c:/ruby/lib/ruby/1.8/webrick/server.rb:23:in
start' c:/ruby/lib/ruby/1.8/webrick/server.rb:82:instart’ c:/ruby/
lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:62:in
dispatch' c:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/ servers/webrick.rb:66 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/ custom_require.rb:27:ingem_original_require’ c:/ruby/lib/ruby/
site_ruby/1.8/rubygems/custom_require.rb:27:in require' c:/ruby/lib/ ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/ dependencies.rb:496:inrequire’ c:/ruby/lib/ruby/gems/1.8/gems/
activesupport-2.0.2/lib/active_support/dependencies.rb:342:in
new_constants_in' c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.0.2/ lib/active_support/dependencies.rb:496:inrequire’ c:/ruby/lib/ruby/
gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39 c:/ruby/lib/ruby/
site_ruby/1.8/rubygems/custom_require.rb:27:in gem_original_require' c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inrequire’ script/server:3
c:/ruby/lib/ruby/1.8/set.rb:89:in empty?' c:/ruby/lib/ruby/gems/1.8/ gems/activerecord-2.0.2/lib/active_record/attribute_methods.rb:56:ingenerated_methods?’ c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/
lib/active_record/attribute_methods.rb:186:in method_missing' c:/ruby/ lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ attribute_methods.rb:194:inmethod_missing’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb:
181:in send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_view/helpers/form_options_helper.rb:181:inoptions_from_collection_for_select’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_view/helpers/form_options_helper.rb:180:in
map' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/ helpers/form_options_helper.rb:180:inoptions_from_collection_for_select’ app/views/shared/_top.html.erb:
14:in _run_erb_47app47views47shared47_top46html46erb' c:/ruby/lib/ ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:insend’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/
base.rb:637:in compile_and_render_template' c:/ruby/lib/ruby/gems/1.8/ gems/actionpack-2.0.2/lib/action_view/base.rb:365:inrender_template’
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/
base.rb:316:in render_file' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:331:inrender’ c:/ruby/lib/
ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/partials.rb:117:in
render_partial' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/benchmarking.rb:26:inbenchmark’ c:/ruby/lib/ruby/
1.8/benchmark.rb:293:in measure' c:/ruby/lib/ruby/1.8/benchmark.rb: 307:inrealtime’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/benchmarking.rb:26:in benchmark' c:/ruby/lib/ruby/ gems/1.8/gems/actionpack-2.0.2/lib/action_view/partials.rb:116:inrender_partial’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_view/base.rb:352:in render' app/views/layouts/ application.html.erb:1:in_run_erb_47app47views47layouts47application46html46erb’ c:/ruby/lib/
ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/base.rb:637:in
send' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/ base.rb:637:incompile_and_render_template’ c:/ruby/lib/ruby/gems/1.8/
gems/actionpack-2.0.2/lib/action_view/base.rb:365:in render_template' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_view/ base.rb:316:inrender_file’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/layout.rb:268:in
render_without_benchmark' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:51:inrender’
c:/ruby/lib/ruby/1.8/benchmark.rb:293:in measure' c:/ruby/lib/ruby/ gems/1.8/gems/actionpack-2.0.2/lib/action_controller/benchmarking.rb: 51:inrender’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:1153:in default_render' c:/ruby/lib/ruby/ gems/1.8/gems/actionpack-2.0.2/lib/action_controller/base.rb:1159:inperform_action_without_filters’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/filters.rb:697:in
call_filters' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/ action_controller/filters.rb:689:inperform_action_without_benchmark’
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
benchmarking.rb:68:in perform_action_without_rescue' c:/ruby/lib/ruby/ 1.8/benchmark.rb:293:inmeasure’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/benchmarking.rb:68:in
perform_action_without_rescue' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/rescue.rb:199:inperform_action_without_caching’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/caching.rb:678:in
perform_action' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/ active_record/connection_adapters/abstract/query_cache.rb:33:incache’ c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/
active_record/query_cache.rb:8:in cache' c:/ruby/lib/ruby/gems/1.8/ gems/actionpack-2.0.2/lib/action_controller/caching.rb:677:inperform_action’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:524:in send' c:/ruby/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:524:inprocess_without_filters’ c:/ruby/lib/ruby/gems/1.8/gems/
actionpack-2.0.2/lib/action_controller/filters.rb:685:in
process_without_session_management_support' c:/ruby/lib/ruby/gems/1.8/ gems/actionpack-2.0.2/lib/action_controller/session_management.rb: 123:inprocess’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:388:in process' c:/ruby/lib/ruby/gems/1.8/ gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:171:inhandle_request’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/dispatcher.rb:115:in dispatch' c:/ruby/lib/ruby/ gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb: 126:indispatch_cgi’ c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.0.2/
lib/action_controller/dispatcher.rb:9:in dispatch' c:/ruby/lib/ruby/ gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:112:inhandle_dispatch’ c:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/
webrick_server.rb:78:in service' c:/ruby/lib/ruby/1.8/webrick/ httpserver.rb:104:inservice’ c:/ruby/lib/ruby/1.8/webrick/
httpserver.rb:65:in run' c:/ruby/lib/ruby/1.8/webrick/server.rb: 173:instart_thread’ c:/ruby/lib/ruby/1.8/webrick/server.rb:162:in
start' c:/ruby/lib/ruby/1.8/webrick/server.rb:162:instart_thread’
c:/ruby/lib/ruby/1.8/webrick/server.rb:95:in start' c:/ruby/lib/ruby/ 1.8/webrick/server.rb:92:ineach’ c:/ruby/lib/ruby/1.8/webrick/
server.rb:92:in start' c:/ruby/lib/ruby/1.8/webrick/server.rb:23:instart’ c:/ruby/lib/ruby/1.8/webrick/server.rb:82:in start' c:/ruby/ lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:62:indispatch’ c:/ruby/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/
servers/webrick.rb:66 c:/ruby/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:27:in gem_original_require' c:/ruby/lib/ruby/ site_ruby/1.8/rubygems/custom_require.rb:27:inrequire’ c:/ruby/lib/
ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/
dependencies.rb:496:in require' c:/ruby/lib/ruby/gems/1.8/gems/ activesupport-2.0.2/lib/active_support/dependencies.rb:342:innew_constants_in’ c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.0.2/
lib/active_support/dependencies.rb:496:in require' c:/ruby/lib/ruby/ gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39 c:/ruby/lib/ruby/ site_ruby/1.8/rubygems/custom_require.rb:27:ingem_original_require’
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
require' script/server:3-e:2:inload’-e:2
Request
Parameters:

{“keshi”=>“2”}

Show session dump


flash: !map:ActionController::Flash::FlashHash {}

:csrf_id: 6bc75729893650ff8791f1eda243c51d

Response
Headers:

{“Status”=>“200 OK”,
“cookie”=>[],
“Cache-Control”=>“no-cache”}

and, the first time after server start,it is ok,but when i refresh the
same page,it show the error.

On Mar 19, 1:14 am, Thorsten M. <rails-mailing-l…@andreas-

On 18 Mar 2008, at 18:02, Vincent.Z wrote:

hang onto old class?

can you provide more details?
Rails reloads classes after each request in development mode, you’ve
got a global variable so weird stuff can happen.

Fred

hang onto old class?

can you provide more details?

but,when i changed it to :

<
%=select_tag(“”,options_from_collection_for_select($cache_keshi,:title,:title))
%>

it works.why? i just replace the :id with :title.

On Mar 19, 1:29 am, Frederick C. [email protected]

On 19 Mar 2008, at 05:42, Vincent.Z wrote:

options_from_collection_for_select($cache_keshi,“id”,“title”)

.

it is just a variable,not class,what is the diff between the
development and production mode to the global variable?

Because in production mode classes aren’t reloaded. Yes it’s just an
array, but this array contains objects and those objects refer back to
their class.

and why the error info is "stack level too deep "?and why it works
when i change “id” to “title”?(maybe it does matter with the primary
key??)

What i’ve been trying to say is that if you do stuff like this, weird
and unpredictable things happen. The fact that it does not happen in
production mode only confirms this. Using a global variable like this
is a bad idea.
You’re be far better off (if this is really necessary) having a static
method on the Keshi class that caches things.
Fred

oh,it work fine in the production mode. :slight_smile:

but,i have some coufusions.

i set and assign the global variable in the initializar/load_keshi.rb
file.as following:
$cache_keshi=Keshi.find(:all)
then in the view,i use the

options_from_collection_for_select($cache_keshi,“id”,“title”)

.

it is just a variable,not class,what is the diff between the
development and production mode to the global variable?

and why the error info is "stack level too deep "?and why it works
when i change “id” to “title”?(maybe it does matter with the primary
key??)

thanks much for your help

On Mar 19, 2:46 am, Frederick C. [email protected]