我已经创建了复选框,我希望每当我选中复选框时,应该调用一个方法/操作,但是它没有唠叨我猜这个操作仍然没有受到影响而且我收到了错误。
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%>
然后创建了一个名为Repository controller
中的进程的新方法 def process --> error in this line
end
并给出路线
post 'repositories/:id/process', to "repositories#process"
答案 0 :(得分:8)
您在controller
中定义了名为process
的操作方法,但process
是rails 基本控制器中已经定义的操作方法强>
您可以通过提供适当的参数来覆盖它,但不能创建具有相同名称的其他操作方法。
您可以通过更改此类内容来实现所需的功能。
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_value
中收到param_name
。您可以使用params[:param_name]
访问它。
每当您收到params[:param_name]
中的任何值时,如果值为checkbox
,则表示checked
为nil
checkbox
unchecked
param_name
请更改
param_value
,id_you_want_to_send
和x = pandas.pd.read_csv('filename/csv file',header=1,parse_data=True,converters={9:14,lambda x:x.decode('int')})
您想要的变量或值。
谢谢!
答案 1 :(得分:1)
您的流程方法不接受任何参数,但您正在向其发送复选框数据。
复选框标记的语法如下:
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发送它。
我建议使用链接而不是实际的复选框,因为它更容易和更清洁。希望这会有所帮助。