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

问题描述 投票:1回答:2

我正在尝试创建一个带有按钮的视图,该按钮调用Redmine插件的控制器操作(不幸的是,我在Rails上很新)。我需要为我的控制器(这里是一个控制器)创建一个方法,这样我就可以更新一些Active Records。

我创建了一个控制器:

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_to在prova控制器中调用正确的RedmineAController方法?

在此先感谢您的帮助。

ruby-on-rails ruby model-view-controller redmine
2个回答
0
投票

在routes.rb文件中添加路由

resources :redmine_as do 
  collections do 
    post :a
  end
end

之后,请在下面的终端命令中输入路由网址

rake routes | grep p

在链接或按钮中设置URL

link_to "Your Link Name", p_redmine_as_path

p_redmines_path它将通过“rake routes | grep p”命令返回。


0
投票

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

我输入了我的routes.rb:

resources :important_user do 
    collection do 
      post :u_update
    end
  end

在我的控制器中:

  def u_update
      puts params[:p_id] 
      puts "update!"
  end
© www.soinside.com 2019 - 2024. All rights reserved.