If it's coming in dynamically, wouldn't it be params[:author][:name]  
or something similar? A bit hard to guess without seeing more code.
-----
Ryan Bigg
Freelancer
http://frozenplague.net







On 09/12/2008, at 9:30 AM, Frederick Cheung wrote:

>
>
> 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 rubyonrails-talk@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to