[英]Getting ArgumentError wrong number of arguments (0 for 1)
運行我的應用程序時,出現以下錯誤:
ArgumentError in StatesController#filter
wrong number of arguments (0 for 1)
我的控制器如下所示:
class StatesController < ApplicationController
def filter(my_string)
@new_array = []
@new_array = state.each {|x| if /#my_string/i =~ x then puts x end}
return @new_array
end
end
我的看法如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>States</title>
</head>
<body>
<% States.filter(params[:substring]) %>
<p><%= @new_array.each %></p>
<% if @new_array.size = 0 %>
<p>No matches!</p>
</body>
</html>
我的代碼有什么問題?
非常感謝
您在StatesController中擁有的filter方法是一個動作。 此類操作不接受參數。 實現您要執行的操作的一種更好的方法是像這樣創建一個稱為State的模型。 並添加過濾器方法:
# app/models/state.rb
class State
def filter(params[:my_string])
@new_array = []
@new_array = state.each {|x| if /#my_string/i =~ x then puts x end}
return @new_array
end
end
在控制器中,您現在應該具有以下內容:
class StatesController < ApplicationController
def filter
@states = State.filter(params[:sub_string])
end
end
然后在相應的視圖中:
<% if @states.empty? %>
<p>No matches!</p>
<% else %>
<p>
<% @states.each do |state| %>
<%= state %>
<% end %>
</p>
<% end %>
這是使用模型將數組加載到實例變量中的。 該實例變量(以@開頭)可在控制器操作中呈現的視圖中訪問。 我們正在使用的動作被指定為過濾器。
在視圖中,我使用空值檢查數組中是否有任何結果? 方法。 否則,我只是遍歷數組。
現在,這僅在標題中具有params [:sub_string]的情況下才有效。 因此,您需要確保網址中包含?sub_string=mystring
之類的內容。
考慮到您的問題和代碼布局,我認為您是Rails的新手。 我真的建議您在這里仔細閱讀入門指南: http : //guides.rubyonrails.org/getting_started.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.