2013-11-29 3 views
0

Привет, я пытаюсь вызвать функцию, которую я написал на моем контроллере из моего javascript, в результате действия, когда я нажимаю кнопку.Как вызвать функцию контроллера из javascript с помощью ajax

Я следил за этим thread, но это совсем не сработало. Когда я нажимаю на кнопку Я получаю ошибку в списке ниже:

Started GET "/projects/:id/repository/:branch" for 127.0.0.1 at 2013-11-29 15:03:43 -0200 
Processing by RepositoriesController#show as */* 
    Parameters: {"id"=>":id", "repository_id"=>":branch"} 
    ←[1m←[35m (0.0ms)←[0m SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings` 
    ←[1m←[36mUser Load (0.0ms)←[0m ←[1mSELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`status` = 1 AND `users`.` 
id` = 10 LIMIT 1←[0m 
    Current user: guilherme.noronha (id=10) 
    ←[1m←[35mProject Load (1.0ms)←[0m SELECT `projects`.* FROM `projects` WHERE `projects`.`identifier` = ':id' LIMIT 1 
    Rendered common/error.html.erb (1.0ms) 
Filter chain halted as :find_project_repository rendered or redirected 
Completed 404 Not Found in 24ms (Views: 21.0ms | ActiveRecord: 1.0ms) 

я не понял, а почему я получаю эту ошибку, так что я здесь, чтобы попросить о помощи.

пыльник мой код, чтобы попытаться обнаружить какую-то ошибку или отсутствие чего-либо:

_view_button_release.html.erb

<script> 
    function CallExec(rep) { 
     $.ajax("/projects/:id/repository/:branch"); 
    } 
</script> 

<div class="contextual"> 
<% if User.current.allowed_to?(:exec, @project) %> 
    <%= button_to_function l(:gerar_build_project), 'CallExec("'+params[:repository_id].to_s+'")' %> 
| 
<% end %> 
</div> 

routes.rb

resources :repositories do 
    match 'projects/:id/repository', :action => 'exec_client', :controller => 'repositories', :via => :post 
    match 'projects/:id/repository/:branch', :action => 'exec_client', :controller => 'repositories', :via => :post 
    get :exec_client, on: :collection 
end 

client.rb (крючок)

module InstanceMethods 
    require_dependency 'repositories_controller' 
    def exec_client 
    begin 
     ... 
    end 
    end 
end 

Любое предложение?

UPDATE:

New Log

Started GET "/projects/b1309/repository/b1309i11/" for 127.0.0.1 at 2013-12-02 10:38:00 -0200 
Processing by RepositoriesController#show as */* 
    Parameters: {"id"=>"b1309", "repository_id"=>"b1309i11"} 
    ←[1m←[35m (0.0ms)←[0m SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings` 
    ←[1m←[36mUser Load (0.0ms)←[0m ←[1mSELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`status` = 1 AND `users`.` 
id` = 10 LIMIT 1←[0m 
    Current user: guilherme.noronha (id=10) 

ответ

0

первым. В коде JS

$.ajax("/projects/:id/repository/:branch"); 

вам нужно вставить вместо :id проекта идентификационным, а :branch филиал идентификатор или название филиала (я не знаю, что контроллер ожидает).

2-й. Вам нужно передать параметры правильно, потому что я не вижу их в журнале. Я вижу параметры, взятые из url Parameters: {"id"=>":id", "repository_id"=>":branch"}. Как передать параметры через ajax, вы можете google. Например, вы можете проверить jquery doc и найти examples.

+0

Я изменил назначения, как вы предлагали, но также не работает. Несмотря на то, что ошибка исчезла, функция остается невостребованной после того, как я нажму кнопку. – kamusett

+0

Что находится в журнале? – gotva

+0

Я обновил вопрос, поставив новый журнал в нижней части вопроса. – kamusett

Смежные вопросы