Ajax call, no route matches?

I’m trying to use an AJAX call in my code, but I doesn’t seem to be able
to find the method I’m trying to call, am I missing something really
obvious here??

I have a method dynamic_form in the TasksController class.

Here is the error I get back in the browser.

No route matches {:page=>nil, :escape=>false, :ascending=>nil,
:per_page=>nil, :group_filter=>“0”, :controller=>“tasks”, :tab=>nil,
:search=>{}, :action=>“dynamic_form”, :search_filter=>nil, :column=>nil}

Extracted source (around line #18):

15: <%= f.text_field :title %>
16: <%= f.hidden_field :assigned_to_id, :value => current_user.id %>
17:
18: Application:
19: <%= select ‘facet’, ‘value’,Facets.application_list([“GBOSS”,
“J_GMISEMEATC” ] ),{}, :onchange => remote_function(:url => {:action =>
‘dynamic_form’}) %>
20:
21: Issue Type:


Thanks for looking guys,

I’m sure the answer is something really obvious!

what route you have in form_for? does this happen when you submit the
form?

Radhames Brito wrote:

what route you have in form_for? does this happen when you submit the
form?

<%= form_for(@task, :task) do |f| -%>

Thanks

On Fri, Oct 8, 2010 at 12:05 PM, Paul H.e [email protected]
wrote:

Radhames Brito wrote:

what route you have in form_for? does this happen when you submit the
form?

<%= form_for(@task, :task) do |f| -%>

this wont build a route for the create action i think it should be

<%= form_for(@task) do |f| -%>

is either one or the other not both, you pass and instance or a symbol

also if this is rails 3 this wont be submited with ajax since it lacks
the
:remote=> true option
and in rails 2.3 it should be form_remote_for

also your controller should respond to js.

“No route matches {:page=>nil, :ascending=>nil, :escape=>false,
:per_page=>nil, :group_filter=>“0”, :tab=>nil, :controller=>“tasks”,
:search=>{}, :search_filter=>nil, :action=>“dynamic_form”,
:column=>nil}”

Something is wrong since the shouldnt be a passing :page=>nil,
:ascending=>nil,:per_page=>nil in the params , view the html code and
check
what action is been called in the html form tag, it should be calling
your_controller_name/dynamic_form (the path i gave you was for a restful
action like create and update not for a custom action like the one you
have,
sorry), what you have here is a custom action, but you can make it
restful
like this

resources :your_controller do
member do
get :dynamic_form <===== get since i assume this is a search
method
end
end

then you will have a new restful action and you can refer to it like
this

form_for dynamic_form_your_controller_path, :remote=> true do |f|

it will work, just remember to change your_controller with the actual
name of your controller, to make sure you can check it by typing rake
routes.

Something is wrong since the shouldnt be a passing :page=>nil,
:ascending=>nil,:per_page=>nil in the params , view the html code and
check
what action is been called in the html form tag, it should be calling
your_controller_name/dynamic_form (the path i gave you was for a restful
action like create and update not for a custom action like the one you
have,
sorry), what you have here is a custom action, but you can make it
restful
like this

Hi Radhames,

Its actually being called by the :onchange part of the form, using a
remote function call like this:

:onchange => remote_function(:url => {:action => ‘dynamic_form’}

Could i just assign values to the :page, :asceding and :per_page within
this call?

Thanks for your help so far, I’m sure the solution will prove to be
simple!!

Paul

On Oct 8, 4:41 pm, Paul H.e [email protected] wrote:

I’m trying to use an AJAX call in my code, but I doesn’t seem to be able
to find the method I’m trying to call, am I missing something really
obvious here??

What’s in your routes file? You may need to add the dynamic_form
action to the mapping defined there (see
http://guides.rubyonrails.org/routing.html#adding-more-restful-actions
or
http://guides.rubyonrails.org/v2.3.8/routing.html#adding-more-restful-actions)

Fred

Hi Radhames,

Thanks for your tips.

I changed to the <%= form_for(@task, :remote=> true) do |f| -%> format.
(I’m using rails3)

I also made sure my controller responds to js. I’m still getting the
same error:

“No route matches {:page=>nil, :ascending=>nil, :escape=>false,
:per_page=>nil, :group_filter=>“0”, :tab=>nil, :controller=>“tasks”,
:search=>{}, :search_filter=>nil, :action=>“dynamic_form”,
:column=>nil}”

Any other ideas?

Paul

Radhames Brito wrote:

On Fri, Oct 8, 2010 at 12:05 PM, Paul H.e [email protected]
wrote:

Radhames Brito wrote:

what route you have in form_for? does this happen when you submit the
form?

<%= form_for(@task, :task) do |f| -%>

this wont build a route for the create action i think it should be

<%= form_for(@task) do |f| -%>

is either one or the other not both, you pass and instance or a symbol

also if this is rails 3 this wont be submited with ajax since it lacks
the
:remote=> true option
and in rails 2.3 it should be form_remote_for

also your controller should respond to js.

:onchange => remote_function(:url => {:action => ‘dynamic_form’}

you should have said this in the first place, use jquery, with its live
function is the unobstrusive way, then sent a getscript, return js.erb
action.

If you need to now how to do this step by step, just have to post a bit
more
of your view code.

and the actions you want to call is can be access by
task_dynamic_form_path

What’s in your routes file? You may need to add the dynamic_form
action to the mapping defined there (see
http://guides.rubyonrails.org/routing.html#adding-more-restful-actions
or
http://guides.rubyonrails.org/v2.3.8/routing.html#adding-more-restful-actions)

Fred

Hi Fred,

I’ve tried various different things in my routes file.

At the moment, this is what it contains:

match ‘dynamic_form’ => ‘tasks#dynamic_form’

this is what rake routes gives back atm

task_dynamic_form /tasks/:task_id/dynamic_form(.:format)
{:controller=>“tasks”, :action=>“dynamic_form”}

Any help you might have is greatly appreciated!

Thanks,

Paul

Radhames Brito wrote:

If you need to now how to do this step by step, just have to post a bit
more
of your view code.

and the actions you want to call is can be access by
task_dynamic_form_path

Apologies Radhames, I did include it in my first post, but I guess i
could have been more clear!

Here is my view code. What it basically is supposed to do is run a
little bit of js that replaces some of html when the first drop down box
is changed.

<%= form_for(@task, :remote=> true, :as=>:task, :url => tasks_path )
do |f| -%>

<%= f.label :title, 'New task:' %> <%= f.text_field :title %> <%= f.hidden_field :assigned_to_id, :value => current_user.id %>

Application:
<%= select ‘facet’, ‘value’,Facets.application_list([“GBOSS”,
“J_GMISEMEATC” ] ),{}, :onchange => remote_function(:url => {:action =>
‘dynamic_form’} ) %>

Issue Type:
<%= select ‘task’, ‘issue_type’,
options_for_select(@task.sti_issue_type_list(User.current_user.group.id),
:selected => session[:default_task_issue_type]), {}, :onchange =>
“$(‘task_submit’).simulate(‘click’)” %>

<%= f.submit ‘Create’ %>
<% end -%>

“$(‘task_submit’).simulate(‘click’)” %>

This here is the problem this is calling url => tasks_path because is
working the same as the submit button and that is your index action
dynamic_form in never called your logic is not rigth, but am going out
to
lunch now all help you in
while

On Oct 11, 4:35 pm, Paul H.e [email protected] wrote:

I’ve tried various different things in my routes file.

At the moment, this is what it contains:

match ‘dynamic_form’ => ‘tasks#dynamic_form’

you’d want /tasks/dynamic form I think or the member {post
‘dynamic_form’} stuff - check the url that is generated

Fred

Hey guys,

I managed to resolve this one. It turns out the line i had inserted in
routes.rb was being affected by a ‘members’ statement before it, causing
it to generate the wrong route. I simply moved the line ahead of this to
resolve the issue, the AJAX call seems to work fine now.

Thanks for all your advice and tips,

Paul

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs