index.html.erbに検索フィールドを持つ2番目のクエリを作る:奇妙なエラーRailsの
<%= form_tag(sheets_path, :method => "get", id: "search-form") do %>
<%= date_field :search, params[:search], placeholder: "Procurar sheets" %>
<%= submit_tag "Procurar", :name => nil,class: "button" %>
<% end %>
sheets_controller.rb:
def index
@sheets = Sheet.where(user_id: current_user)
if params[:search]
@sheets = Sheet.search(params[:search], current_user.id)
else
@sheets = Sheet.where(user_id: current_user)
end
end
sheet.rb:
def self.search(search, userid)
date_start = search
date_end = '2017-07-27T00:00:00'#hardcoded, for now, implement date_start +24h later
self.where("user_id =" + userid.to_s).where("inicio > ?", date_start).where("inicio < ?", date_end)
end
私は最初のクエリを言う:2017-07-03
それは私にstart_dateが> 2017-07-03より大きいシートを与え、それをすべてok、n http://localhost:3000/sheets?utf8=%E2%9C%93&search%5B%5B%222017-07-03%22%5D%5D=2017-07-05
とコンソール:
Processing by SheetsController#index as HTML
Parameters: {"utf8"=>"✓", "search"=>{"\"2017-07-03\""=>"2017-07-05"}}
User Load (1.0ms) EXEC sp_executesql N'SELECT [users].* FROM [users] WHERE [users].[id] = @0 ORDER BY [users].[id] ASC OFFSET 0 ROWS FETCH NEXT @1 ROWS ONLY', N'@0 int, @1 int', @0 = 7, @1 = 1 [["id", nil], ["LIMIT", nil]]
Completed 500 Internal Server Error in 6ms (ActiveRecord: 1.0ms)
TypeError (can't quote Array):
app/models/sheet.rb:7:in `search'
OWそれは私に がアレイ
とリンク引用することはできませんSheetsControllerの#インデックス内
- はTypeErrorを与える、のは、私が後
2017-07-05
を照会しましょうどうすればこの問題を解決できますか?これは何が間違っていますか?
あなたのフォームにparams [:search]を入れたのはなぜですか?これが問題の原因となっています。コントローラ内でのみparamsを呼び出す必要があります(ビュー内のアドレスバーからいくつかの要素を取得する必要はありませんが、悪い習慣です)。 – Maxence
どうすれば修正できますか? –