簡體   English   中英

Rails:參數數量錯誤(給定1,預期為0)

[英]Rails: Wrong number of arguments(given 1, expected 0)

我已經創建了復選框,我希望每當我選中復選框時應該調用一個方法/動作,但它不是在討厭,我​​猜這個動作仍然沒有受到影響,我收到了錯誤。

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"

您正在定義的操作方法 controller與名稱process ,但process是在軌基地控制器已定義的操作方法。

您可以通過提供適當的參數來覆蓋它,但不能創建具有相同名稱的另一個操作方法。

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

而已! 當您選中該復選框時,您將在action方法的params哈希中的param_name中收到param_value 您可以使用params[:param_name]訪問它。

當您將收到任何價值params[:param_name]這意味着checkbox正在checked ,如果值是nil ,這意味着checkboxunchecked

請將param_nameparam_valueid_you_want_to_send為所需的變量或值。

謝謝!

您的流程方法不接受任何參數,但您正在向其發送復選框數據。

復選框標記的語法如下所示:

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發送它。

我建議使用鏈接而不是實際的復選框,因為它更容易和更清潔。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM