ActionView :: Template :: Error - Нет маршрута, совпадающего с действием в button_to \ link_to, вызывающего действие контроллера - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь создать представление с помощью кнопки, вызывающей действие контроллера для плагина Redmine (к сожалению, я довольно новичок в Rails). Мне нужно создать метод для моего контроллера (здесь A Controller), чтобы я мог обновить некоторые активные записи.

Я создал контроллер:

redmine_a_controller.rb

class RedmineAController < ApplicationController

  def prova(input)
    puts input
    return input
  end

  def p
    puts 'vuoto'
    returns 'vuoto'
  end

end

Действия работают правильно при вызове из консоли. К сожалению, при вызове с моей точки зрения _a.html.erb:

  <%= 
      button_to l(:imp_update), {
        :controller => 'RedmineAController',
        :action => 'p',
        method: :post
      }
  %>

Возвращает эту ошибку:

ActionView::Template::Error (No route matches {:action=>"p", :controller=>"RedmineAController", :id=>"prova", :method=>:post, :tab=>"important_users"}):

Я попытался вызвать действие для нового экземпляра:

  <%= 
      button_to l(:imp_update), {
        :action => RedmineImportantUsersController.new.prova(1),
        method: :post
      }
  %>

но он ищет действие в контроллере Projects

ActionView::Template::Error (No route matches {:action=>"1", :controller=>"projects", :id=>"prova", :method=>:post}):

Как заставить button_ вызвать правильный метод prova в контроллере RedmineAController?

Заранее спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Как указал Кетан, мне не хватало маршрута!

Я положил в мои маршруты.rb:

resources :important_user do 
    collection do 
      post :u_update
    end
  end

и в моем контроллере:

  def u_update
      puts params[:p_id] 
      puts "update!"
  end
0 голосов
/ 17 апреля 2019

Добавить маршруты в rout.rb файл

resources :redmine_as do 
  collections do 
    post :a
  end
end

После этого, пожалуйста, оформите URL маршрутов, набрав в терминале ниже команду

rake routes | grep p

УстановитеURL-адрес в ссылке или кнопке

link_to "Your Link Name", p_redmine_as_path

p_redmines_path он будет возвращен этой командой "rake route | grep p".

...