我的应用程序中的简单浏览器有问题。 我已经在寻找解决方案,但仍然显示以下错误: 参数缺失或值为空:费用。
请帮忙。 指数:
<%= form_tag expenses_path :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search" , name: nil %>
控制器:
类费用控制器
# GET /expense expense
# GET /expense.json
def index
@expenses = Expense.search(params[:search])
end
# GET /expense/1
# GET /expense/1.json
def show
end
# GET /expense/new
def new
@expense = Expense.new
end
# GET /expense/1/edit
def edit
end
# POST /expense
# POST /expense.json
def create
@expense = Expense.new(expense_params)
respond_to do |format|
if @expense.save
format.html { redirect_to @expense, notice: 'zostały zapisane.' }
format.json { render :show, status: :created, location: @expense }
else
format.html { render :new }
format.json { render json: @expense.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /expense/1
# PATCH/PUT /expense/1.json
def update
respond_to do |format|
if @expense.update(expense_params)
format.html { redirect_to @expense, notice: 'expense was successfully updated.' }
format.json { render :show, status: :ok, location: @expense }
else
format.html { render :edit }
format.json { render json: @expense.errors, status: :unprocessable_entity }
end
end
end
# DELETE /expense/1
# DELETE /expense/1.json
def destroy
@expense.destroy
respond_to do |format|
format.html { redirect_to @expense, notice: 'Zakupy zostały usunięte.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_expense
@expense = Expense.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def expense_params
params.require(:expense).permit(:date, :price, :category, :where)
end
Expense.rb:
class Expense < ApplicationRecord
def self.search(search)
if search
where (['where LIKE ?',"%#{search}%"])
else
all
end
end
允许在参数中进行搜索
def expense_params
params.require(:expense).permit(:date, :price, :category, :where, :search)
end
请更正form_tag语法
<%= form_tag(expenses_path,method: :get) do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search" , name: nil %>
<% end %>
您报告的错误消息很可能来自您的expense_params
方法:
params.require(:expense)
意味着您希望参数的形式为 params[:expense][:date]
、params[:expense][:price]
等。
我最好的猜测是,您的表单实际上并没有提交GET请求,因此它将转到create
方法而不是索引方法。
我认为这可能是因为您在form_tag
中缺少expenses_path
和:method => 'get'
之间的逗号。它应该是:
<%= form_tag expenses_path, :method => 'get' do %>