【问题标题】:Rails: Wrong number of arguments(given 1, expected 0)Rails:参数数量错误(给定 1,预期 0)
【发布时间】:2017-03-02 06:37:30
【问题描述】:

我已经创建了复选框,并且我希望每当我选中复选框时都应该调用一个方法/动作,但它没有发生

Wrong number of arguments (given 1, expected 0).

我做的是! 在 show.html.erb 中创建了一个复选框

<%= @files.each do |key,value|%>
  <%=check_box_tag(:key, key,Repository.process)%>
  <%=label_tag(:key)%>
<%end%>

然后在存储库控制器中创建了一个名为进程的新方法

 def process --> error in this line
      end

并给定路线

post 'repositories/:id/process', to "repositories#process"

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

您在 controller 中定义了一个 action 方法,名称为 process,但 process 是 rails base controller 中已定义的 action 方法。

您可以通过提供适当的参数来覆盖它,但您不能创建另一个具有相同名称的操作方法。

http://apidock.com/rails/AbstractController/Base/process

你可以通过改变这样的东西来实现你想要的功能。

1- 在Repository Controller 中更改您的操作名称。让我们将其命名为generate,因此在您的控制器中添加以下函数。 (请删除进程)

def generate
  // Write your custom code to process the params[:id]
end

2- 将此添加到您的 routes.rb 文件中

post 'repositories/:id/generate' => "repositories#generate", as: 'generate_repository'

3- 替换您的 checkbox 代码

<%=check_box_tag(:key, key,Repository.process)%>

有了这个

<%= check_box_tag(:param_name, param_value, false, data: {remote: true, method: :post, url: generate_repository_path(id_you_want_to_send) }) %>

就是这样!当您选中该复选框时,您将在您的操作方法中的 params 哈希中收到 param_name 中的 param_value。您可以通过params[:param_name] 访问它。

每当您在params[:param_name] 中收到任何值时,这意味着checkboxchecked,如果值为nil,则意味着checkboxunchecked

请将param_nameparam_valueid_you_want_to_send 更改为 您想要的变量或值。

谢谢!

【讨论】:

    【解决方案2】:

    您的流程方法不接受任何参数,但您正在向其发送复选框数据。

    复选框标签的语法如下:

    check_box_tag(name, value = "1", checked = false, options = {})
    

    您的复选框标记如下所示:

    check_box_tag :key, key, Repository.process 
    

    你传递了一个你不应该被检查的参数 也许您只想使用 check_box:

    check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
    

    此外,要在他们单击复选框时触发方法调用,您必须添加一个 remote: true 选项并通过 Ajax 发送它。

    我建议使用链接而不是实际的复选框,因为它更容易和更清晰。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      相关资源
      最近更新 更多