我有以下嵌套资源:
resources :sources do
resource :category_pages
end
当我以category_pages的形式出现时,我有这个:
<%= form_for [params[:source_id], @category_page], url: source_category_pages_path do |form| %>
<%= render partial: 'form', locals: { form: form } %>
<% end %>
我试图看看如何确保source_id在我的控制器中的params中。我尝试过:
def create
@category_page = CategoryPage.new(category_page_params)
end
def category_page_params
params.require(:category_page).permit(:name, :url, :source_id)
end
但我一直收到一条错误消息,说'source_id'不能为空。在这种情况下,我应该如何使用强参数?
我也试过这个:
def category_page_params
params.require(:category_page, :source_id).permit(:name, :url)
end
因为source_id不在category_page参数内,但显然需要只接受一个参数。 Params看起来真的像这样:
{"utf8"=>"✓", "authenticity_token"=>"...=", "category_page"=>{"name"=>"", "url"=>""}, "commit"=>"Add Category Page", "action"=>"create", "controller"=>"category_pages", "source_id"=>"1"}
答案 0 :(得分:0)
:source_id
不属于category_page_params
,因为它未与category_page
一起传递。尝试使用此功能:
def source_id_params
params.require(:source_id)
end
答案 1 :(得分:0)
试试这个
def safe_params
safe_attributes = [
category_pages_attributes:
[
:id, :name, :url, :_destroy
]
]
params.require(:source).permit(*safe_attributes)
end