ruby-on-rails - 创建后如何修复参数丢失
问题描述
我正在开发订阅应用程序,但我一直在忙于在产品的展示/页面上创建订阅。因为错误
ActionController::ParameterMissing(参数丢失或值为空:订阅):
路线.rb
resources :products do
resources :subscriptions, only: [:create]
end
产品/show.html.erb
<div class="subscribe">
<%= form_with(model: @subscription, url: product_subscriptions_path(product_id: @product.id)) do |f| %>
<div>
<%= f.text_field :email %>
<%= f.submit "Register", class: "btn"%>
</div>
<% end %>
</div>
products_controller.rb
def show
@product = Product.find_by_id(params[:id])
@subscription = Subscription.new
end
订阅控制器.rb
def create
@product = Product.find(params[:product_id])
@subscription = @product.subscriptions.build(create_params)
@subscription.save
end
def create_params
params.require(:subscription).permit(:email, :product_id)
end
解决方案
url 助手在这里需要两个参数,因为它是一个嵌套路由。
url: product_subscriptions_path(product: @product, subscription: @subscription))
推荐阅读
- typescript - 模板字符串如何排除某些字段?
- python - 如何使用 python 从表格文本文件中删除行?
- c++ - 小类型(char和short)的来回移位行为
- javascript - 如何在 Node Js 中提取受密码保护的 zip
- webstorm - 如何在 WebStorm 中用标签包围文本?
- python - 如何从 Python 中的分层数据创建树结构?
- business-intelligence - 如何将知识嵌入到 html
- python - 如何处理空列表小部件
- html - 阻止 Google 翻译我的 Wordpress 页面的页眉和页脚
- r - 在 R 中创建带有天数的时间序列