【发布时间】:2014-10-02 10:29:59
【问题描述】:
我有这个控制器
class StoresController < ApplicationController
before_filter :authenticate_business!, :except => [:index, :show]
def index
#@stores = Store.paginate(:page => params[:page])#, :per_page => 8)
if params[:query].present?
@stores = Store.search(params[:query], page: params[:page])
else
@stores = Store.all.page params[:page]
end
end
def show
@store = Store.friendly.find(params[:id])
if request.path != store_path(@store)
redirect_to @store, status: :moved_permanently
end
end
def new
@store = Store.new
end
def create
@store = Store.new(store_params)
@store.business_id = current_business.id
if @store.save
redirect_to @store
else
render 'new'
end
end
def edit
@store = Store.friendly.find(params[:id])
end
def update
@store = Store.friendly.find(params[:id])
if @store.update(store_params)
redirect_to @store
else
render 'edit'
end
end
def destroy
@store = Store.friendly.find(params[:id])
@store.destroy
redirect_to stores_url
end
private
def store_params
params.require(:store).permit(:name, :description, :address, :telephone, :email, :website)
end
end
和一个带有表单的视图来创建一个新的商店。
<%= form_for @store do |f| %>
.......
code
......
<% end %>
问题是,当我提交表单时,它给了我这个错误“参数丢失或值为空:存储”,指向行“params.require(:store).permit(:name,:description , :address, :telephone, :email, :website)"
有解决这个问题的办法吗? 谢谢。
【问题讨论】:
-
您可以在提交表单时显示浏览器的响应标头吗?表单中的字段是否也与控制器中的参数相关?
-
是的,表单中的字段与'store_params'函数相同。请求参数 {"utf8"=>"✓", "authenticity_token"=>"vdBK16ZwnqAPWtqTOlNjA5lBIHnW9Vb5WkpbOYhoCrQ=", "commit"=>"添加存储", "action"=>"create", "controller"=>"stores"}
-
在您发布的内容下方,在您的浏览器中,您应该查看您提交的内容是否有任何值,它在表单数据下,应该如下所示:名称:xxxxxxx,描述:xxxxxx,还要确保所有此位中的字段对应于您允许的参数
-
这是表格:etc etc 中没有表单数据better_error 页面
-
似乎在 new.html.erb 中修复了这个合并部分 _form.html.erb
标签: ruby-on-rails controller strong-parameters