|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
||||
|
||||
|
Ruby Newbie
Hi all,
Ruby and I are having a hard time bonding. I have a very basic question, and I hope that someone would be willing/able to assist me. I have a simple web form where users may search by case number. I have my Controller set up to take a parameter, and query the DB with it. It appears that the parameter is getting set, but apparently the syntax I am using to query with is wrong. I am able to return a record when I hard-code a case number into the query statement, but not when I use a variable. Now, if I were in php, this would be a breeze to solve... echo the value of the parameter to make sure it's getting set...echo the value of the query statement and make sure it's correct. Problem solved. Unfortunately, I don't know how to do even these simple error-checks in Ruby, and the books I have read are vague on this topic, to say the least. Since Ruby is new here, I'll wait for a response before I start posting code snippetts of what syntax I've tried. I hope there are some Ruby humans out there that I can mingle with. Thanks in advance!! ~Snow |
|
#2
|
||||
|
||||
|
This is specifically a rails question. please put that in the title in future.
I'm not a rails guy, but i'm very much a ruby guy. Can we see some code please?
__________________
~James [Not currently seeking freelance work] Like philosophy or interested in spirituality? Philosophorum. Game Dev Experts Forums Foresight Linux - Because your desktop should be cool! Linux FAQ FedoraFAQ UbuntuGuide |
|
#3
|
||||
|
||||
|
My apologies - as I said, I'm a newbie...
This page - search.rhtml - is where user enters case number to search by. Calls the 'list' method in the case_controller.rb. Code:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<h1 align="center">Case Search</h1>
<h3 align="center"><font color="red">*</font> Indicates required field</h3>
</head>
<body>
<form action='list' method='post'>
<table border="0" align="center" cellspacing="5" cellpadding="3" bgcolor="#DEBDDE">
<tr>
<td nowrap align="right">CASE ID:</td>
<td><input type="text" name="case[case_id]"></td>
</tr>
<tr>
<td align="right">ENTRY DATE:</td>
<td><input type="text" name="case[entry_date]"></td>
</tr>
<tr>
<td align="right">NAME:</td>
<td><input type="text" name="case[l_name]" size="20">
<input type="text" name="case[f_name]" size="20"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Query"></td>
</tr>
</table>
</form>
</body>
</html>
case_controller.rb: Code:
class CaseController < ApplicationController
layout "cor_footer"
scaffold :case
def list
@case = @params['case_id']
@case_search =
Case.find(:all,
:conditions => ["case_id = @case", @params])
end
Which should display results in list.rhtml: Code:
<h2> Listing Search Results </h2> <table border=1 cellpadding=5> <tr> <td width="20%"><p align="center"><i><b>Case ID</b></i></td> <td width="60%"><p align="center"><i><b>Name</b></i></td> <td width="20%"><p align="center"><i><b>Entry Date</b></i></td> </tr> <% if (@case == nil) || (@case == code.case_id) %> <% @case_search.each do |code| %> <tr> <td> <%= code.case_id %></td> <td> <%= code.l_name %></td> <td> <%= code.entry_date %></td> </tr> <% end %> <% end %> </table> As mentioned, I hit the table fine when I hard-code a value, like so: Code:
@case_search = Case.find(:all, :conditions => "case_id = '28493'") So, I'm guessing that the trouble lies here somewhere: Code:
def list
@case = @params['case_id']
@case_search = Case.find(:all,
:conditions => ["case_id = @case", @params])
end
Thank you for helping! |
|
#4
|
||||
|
||||
|
You need to have it interpolate the values..
"case_id = '#@case'" If it's not a package, global or class variable you need to do #{variable} so ruby knows. edit: I also wrapped some quotes around it. I believe rails handles escaping for you, but i'm no rails guy. |
|
#5
|
||||
|
||||
|
Thanks for the suggestion.
I tried this: Code:
def list
@case = @params['case_id']
@case_search = Case.find(:all, :conditions => "case_id = '#{@case}'")
end
Still no dice. I tried it with and without curlies. Perhaps my problem lies elsewhere. I'm only making the assumption that it is picking up my param value, because when I have a syntax error, it shows the value of case_id - but perhaps it is not passing it to the controller. Do you know of a way to echo the param value to the screen so I can see what I'm passing? |
|
#6
|
||||
|
||||
|
there's a flash command in rails i think, probably under another name
you could flash it. |
|
#7
|
||||
|
||||
|
Ok, that helped alot! I now know that my param is not getting set correctly. SO - my next question for you is, do you know the difference between these syntax?
Code:
@case = @params['case_id'] @case = @params[:case_id] I have seen them written both ways, and I'm thinking that they are interchangable, but I'm not sure? |
|
#8
|
||||
|
||||
|
They are interchangeable.
The first form is a string, you know that. The second form is a symbol. The idea is that if you use a string many times, you should convert it to a symbol. When ruby gets bytecode compilation down, it will save some memory by only storing it once. |
|
#9
|
||||
|
||||
|
Well, it's still not getting the param into the variable. I put a flash on my list.rhtml page, and the var is empty.
Do you see anything else in my HTML or anywhere else that may throw a red flag at you? I'm running out of ideas! |
|
#10
|
||||
|
||||
|
Well i had presumed rails required you give those names... however i'm tempted to change them to static values at least as a test...
<input type="text" name="case_id"> Like i said, i'm not a rails guy, so sh!t may break. |
|
#11
|
||||
|
||||
|
Well, believe or not, that worked! You're right, the reason I had named it that way was because when I was trying to load combo boxes in a different form, Rails wouldn't recognize the field unless it was associated with the table name...sheesh.
Wonder how that's going to work when I need to get combo box values back? Oh well - cross that bridge when I get to it I guess. Thanks for your help and suggestions. ~Snow W. |
![]() |
| Viewing: Dev Shed Forums > Programming Languages > Ruby Programming > Ruby Newbie |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|