Form data not uploading to sqlite database

40 views
Skip to first unread message

Ankur Kumar

unread,
Nov 29, 2013, 5:18:26 PM11/29/13
to rubyonra...@googlegroups.com

Hi,

I created a simple form using form_for and partials. When I enter a value in text field and click on add button, the data doesn't get uploaded in database table. 

view/task.html.erb
<%= render :partial => "job_form" %>

<% for job in @jobs %> 
<%= job.name %>
<% end %>

view/_job_form.html.erb
<%= form_for(@job, :url => task_path) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit "Add" %>
<% end %>

/view/home_login_controller.rb
def task
@job = Task.new
@jobs = Task.all
end

db/<migration stamp>_create_tasks.rb
def change
    create_table :tasks do |t|
   t.string :name
          t.timestamps
    end
 end

db/schema.rb
 create_table "tasks", :force => true do |t|
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
    t.string   "name"
  end

app/models/task.rb
class Task < ActiveRecord::Base
  # attr_accessible :title, :body
end

I have done db migration and db schema exists for table but "select * from tasks" doesn't return any rows and therefore UI doesn't show any form data. Can someone please help me debug this issue? 

Thanks. 
--
Regards,
Ankur 

Frederick Cheung

unread,
Nov 30, 2013, 4:39:33 AM11/30/13
to rubyonra...@googlegroups.com


On Friday, November 29, 2013 10:18:26 PM UTC, Ankur wrote:

I have done db migration and db schema exists for table but "select * from tasks" doesn't return any rows and therefore UI doesn't show any form data. Can someone please help me debug this issue? 


So what does happen when you click on the form's button ? Did you look at your application logs / server output? At first glance you're posting to the wrong url - to create a new task you post to tasks_path where you have forced the url to task_path (which would be appropriate for updating an existing task).

Fred

Ankur Kumar

unread,
Nov 30, 2013, 5:11:12 AM11/30/13
to rubyonra...@googlegroups.com

Hi Frederick,

If I change the path to tasks_path, I get the following error while navigating on to the page which has this form. If I keep task_path, navigation works fine. 


undefined local variable or method `tasks_path' for #<#<Class:0xa3de690>:0xb550f644>
I don't see any error in development.log when I click on the Add button. the page re-loads as expected because of "task_path" url but data doesn't persist. 

Trace:

    Started POST "/task" for 127.0.0.1 at 2013-11-30 15:11:15 +0530
    Processing by HomeLoginController#task as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"wXpiPiPabBjOBN1iqF/Hj4z81y3RCcSj/gRSpWFuIC0=", "task"=>{"name"=>"eeff"}, "commit"=>"Add"}
      ^[[1m^[[36mUser Load (0.2ms)^[[0m  ^[[1mSELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1^[[0m
      ^[[1m^[[35mTask Load (0.2ms)^[[0m  SELECT "tasks".* FROM "tasks"
      Rendered home_login/_job_form.html.erb (1.2ms)
      Rendered home_login/task.html.erb within layouts/application (67.2ms)
    Completed 200 OK in 97.6ms (Views: 93.5ms | ActiveRecord: 0.4ms)

Also, I missed adding create action in controller earlier, have added it now:

        def create
Task.create params[:task]
redirect_to :back
end

Thanks. 

--
Regards,
Ankur 



--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/46cf8fba-f24b-4eec-896c-b87e5ee4bca8%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Colin Law

unread,
Nov 30, 2013, 6:23:48 AM11/30/13
to rubyonra...@googlegroups.com
On 29 November 2013 22:18, Ankur Kumar <specia...@gmail.com> wrote:
>
> Hi,
>
> I created a simple form using form_for and partials. When I enter a value in
> text field and click on add button, the data doesn't get uploaded in
> database table.

Can I suggest that you work right through a good tutorial such as
railstutorial.org (which is free to use online). That will show you
the basics of rails so that you will be able to answer simple
questions yourself.

Colin

Frederick Cheung

unread,
Dec 2, 2013, 5:55:50 AM12/2/13
to rubyonra...@googlegroups.com


On Saturday, November 30, 2013 10:11:12 AM UTC, Ankur wrote:


Also, I missed adding create action in controller earlier, have added it now:

        def create
Task.create params[:task]
redirect_to :back
end


Did you add a route for your create action ? That would also explain why tasks_path raises an exception (I was assuming you had resources :tasks in your routes). As Colin says, this sort of stuff is covered by most tutorials. This will also get you on the path of using standard naming conventions, which makes things  a lot easier.

Fred
Reply all
Reply to author
Forward
0 new messages