On 8 Dec 2008, at 22:53, Jay Mark wrote:
> > Thanks again Fred. > NO, I am not asking for the author whose name is the exact string > 'name'. > "Name" is the attribute or column in the authors table which has name > values like James, John, etc. The user will select a name, say John, > then I am passing that name as a condition to the query. > After a submit button is clicked, the URL shows this: > http://localhost:3000/authors/show?author[name]=John&commit=Submit > > I can't stick the name value in because it has to come dynamically to > the controller. Name is not unique in the table > > I am still looking for the correct syntax for this: > @authors = Author.find_by_sql ["SELECT * FROM authors WHERE name = ?", > 'author[:name]'] Author.find_all_by_name author[:name] In general, whereever I wrote name in the previous suggestions you can just write author[:name] > > > > > and this subselect: > > @books = Books.find_by_sql ["SELECT * FROM books where title > IN( SELECT > title FROM authors where name = ?", 'name')] > Like I said, you've not to write it in the form Books.find_by_sql [some_sql_statement, author[:name]] Seems to me like you would benefit from going back to some basic ruby stuff. Fred > I can't find it in the Docs. > Please send me any pointers. > Thanks > > Cypray > > > > > > > > > > > > Frederick Cheung wrote: >> On Dec 8, 7:31�pm, Jay Mark <[EMAIL PROTECTED]> >> wrote: >>> Thanks for your help Fred. The wrong number of argument problem is >>> gone. >>> >>> The queries are still not working. >>> >>> Using find_all_by_name give me "method not found error" >>> >> That should work as long as the argument you pass it exists (and as >> long as Author has a column called name) , but from what you say >> below >> you don't have a local variable called name. >> >>> This one below returns no data but gives no error. But it works fine >>> when I put it in mysql directly. >>> >>> @authors = Author.find_by_sql ["SELECT * FROM authors WHERE name >>> = ?", >>> �'name'] >>> >>> Also passing it in as author[:name] returns no data but gives no >>> error, >>> just empty rows >>> >> Well you've asked for authors whose name is the exact string 'name'. >> Presumably you have a variable of some sort with the name you are >> searching for ? You should stick that in >> >> >>> @authors = Author.find_by_sql ["SELECT * FROM authors WHERE name >>> = ?", >>> 'author[:name]'] >>> >>> Without the single quote ('') around the 'name', I get "undefined >>> local >>> variable" error. >>> >>> Does any one know what is wrong with my query? >>> >>> Also �Rails is rejecting the syntax of the subselect below: >>> >> You're closing the parens in the wrong place. what you pass to >> find_by_sql must be >> [ "A string with all the sql", all, the, substitutions, here] >> >> take a look at the examples in the docs. >> >> Fred > > -- > Posted via http://www.ruby-forum.com/. > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

