首页 > 解决方案 > 创建后如何修复参数丢失

问题描述

我正在开发订阅应用程序,但我一直在忙于在产品的展示/页面上创建订阅。因为错误

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

标签: ruby-on-rails

解决方案


url 助手在这里需要两个参数,因为它是一个嵌套路由。

url: product_subscriptions_path(product: @product, subscription: @subscription))

推荐阅读