ActionView :: Template :: Error-没有路由与button_to \ link_to中的动作匹配以调用控制器动作

时间:2019-04-17 09:12:19

标签: ruby-on-rails ruby model-view-controller redmine

我正在尝试创建一个带有按钮的视图,该按钮调用Redmine插件的控制器动作(不幸的是,我在Rails上还很陌生)。我需要为我的控制器(这里是控制器)创建一个方法,以便我可以更新一些活动记录。

我创建了一个控制器:

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
      }
  %>

但它会在“项目”控制器中查找操作

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

如何使button_在prova控制器中调用正确的RedmineAController方法?

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

routes.rb 文件中添加路由

resources :redmine_as do 
  collections do 
    post :a
  end
end

在那之后,请通过在命令下面的终端上键入来细化Routes网址

rake routes | grep p

在“链接”或按钮中设置网址

link_to "Your Link Name", p_redmine_as_path

p_redmines_path ,它将通过“耙路”返回  | grep p“命令。

答案 1 :(得分:0)

正如Ketan所说,我错过了一条路线!

我放入了route.rb:

resources :important_user do 
    collection do 
      post :u_update
    end
  end

并在我的控制器中:

  def u_update
      puts params[:p_id] 
      puts "update!"
  end