Hi
I have two date fields in table start_date and end_date .There data
type are datetime. Now in the view I am accepting values of them as
text fields like And I am following RailsCast 32
<%= f.text_field :start_date_string, :value => ‘’, :maxlength => 50
%>
<%= f.text_field :end_date_string, :value => ‘’, :maxlength => 50 %>
And in my model
validates_presence_of :start_date
def start_date_string
start_date.to_s(:db)
end
def start_date_string=(start_date_str)
self.start_date = Time.parse(start_date_str)
end
def end_date_string
end_date.to_s(:db)
end
def end_date_string=(end_date_str)
self.end_date = Time.parse(end_date_str)
end
But my problem is validates_presence_of :start_date is not working
Even if I dont give any values to start date it does not show any error
message. Please help
Thanks in advance
Tom
On 1 April 2010 13:10, Tom M. [email protected] wrote:
And in my model
Even if I dont give any values to start date it does not show any error
message. Please help
When you say it is not working, what exactly is not working? Two
things should happen if the validate fails, firstly the record should
not get saved to the database and secondly an error message should be
made available. You have said that you are seeing no message but is
the record getting saved or not?
How are you showing the error message? An error here could be the
explanation for not seeing the message.
Have you tried using ruby-debug to break into your controller and see
what is happening when you submit? If you do not know how to do this
have a look at the rails guide on debugging at
http://guides.rubyonrails.org/.
Colin
On Apr 1, 10:49 pm, Colin L. [email protected] wrote:
%>
end
How are you showing the error message? An error here could be the
explanation for not seeing the message.
Have you tried using ruby-debug to break into your controller and see
what is happening when you submit? If you do not know how to do this
have a look at the rails guide on debugging athttp://guides.rubyonrails.org/.
Colin
Hi Team,
I am having a similar problem, also following along from railscast 32.
Any suggestions welcome. Is it an erb thing or something wrong with my
model code? Also :formdate is a date field not a datetime field.
==========
View throws this ERROR PAGE:
ArgumentError in Contracts#new
Showing app/views/contracts/new.html.erb where line #84 raised:
wrong number of arguments (1 for 0)
Extracted source (around line #84):
81:
82:
83:
84:
<%= f.label :formdate, “Date” %>
<%=
f.text_field :formdate_string
85: %>
86:
<%= f.label :publication %> <%=
f.text_field :publication %>
87:
<%= f.label :issue %> <%=
f.text_field :issue %>
Request
Parameters:
None
Show session dump
Response
Headers:
{“Content-Type”=>“text/html”,
“Cache-Control”=>“no-cache”}
MODEL:
class Contract < ActiveRecord::Base
def formdate_string
formdate.to_s(:db)
end
def formdate_string=(fdate_str)
self.formdate = Time.parse(fdate_str)
end
end
VIEW: new.html.erb - extract
<%= f.label :formdate, "Date" %>
<%= f.text_field :formdate_string %>
==========
Thank you.
On Apr 14, 10:46 pm, Colin L. [email protected] wrote:
model code? Also :formdate is a date field not a datetime field.
Response
def formdate_string
VIEW: new.html.erb - extract
<%= f.label :formdate, "Date" %>
<%= f.text_field :formdate_string %>
That does not appear to be exactly the same code as shown in the error
above. Above it has a newline after :formdate_string, as it shows the
%> on line 85. Could that be part of the problem I wonder?
Colin
Thanks for your prompt reply. It wasn’t the new line, but that
difference was well spotted.
I found it… makes sense now… ArgumentError… it wasn’t getting
passed an argument for a new form. The form worked for the edit action
when the field was populated.
I needed to initialize the formdate field with a value. So I added
this to the “new” action of the controller.
eg.
def new
@contract = Contract.new
@contract.formdate = Time.now.localtime.strftime("%Y-%m-%d")
end
Would you say this is good practice? or could I do it better elswhere
or with different code?
Cheers.
On 14 April 2010 03:47, Cote [email protected] wrote:
ArgumentError in Contracts#new
84:
<%= f.label :formdate, “Date” %>
<%=
f.text_field :formdate_string
85: %>
86: <%= f.label :publication %> <%=
f.text_field :publication %>
87: <%= f.label :issue %> <%=
f.text_field :issue %>
This is not a similar problem at all. The OP had an issue with
validations, yours is showing an error.
I don’t see the problem immediately, but I suggest removing bits of
code till it does not show the error, then putting it back a little at
a time till you find exactly what is causing the problem.
class Contract < ActiveRecord::Base
VIEW: new.html.erb - extract
<%= f.label :formdate, "Date" %>
<%= f.text_field :formdate_string %>
That does not appear to be exactly the same code as shown in the error
above. Above it has a newline after :formdate_string, as it shows the
%> on line 85. Could that be part of the problem I wonder?
Colin
Hi
MODEL:
class Contract < ActiveRecord::Base
def formdate_string
formdate.to_s(:db)
end
def formdate_string=(fdate_str)
self.formdate = Time.parse(fdate_str)
end
end
This happens when in the new does not get value And as one of the
post in the railscast page suggest it can be solved with an instance
varibale like
def formdate_string
@formdate_string || (formdate.to_s(:db) unless formdate.nil?)
end
def formdate_string=(fdate_str)
@formdate_string = fdate_str
self.formdate = Date.parse(@formdate_string)
rescue ArgumentError
@formdate_invalid = true
end
@formdate_invalid can be used in def validate
Tom