微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有嵌套资源的 Rails 表单的 NoMethodError

如何解决带有嵌套资源的 Rails 表单的 NoMethodError

我创建了一个带有嵌套资源的简单表单,如下所示:

        <%= simple_form_for [@user,@spot] do |f| %>
          <div class="form-inputs">
            <%= f.input :location,label: false,input_html: { placeholder: "location" } %>
          </div>
          <div class="form-actions">
            <%= f.button :submit,"Submit",class: "btn-submit btn-red btn-fill" %>
          </div>
        <% end %>

在我的路线中,我进行了相应的嵌套:

  resources :users do
    resources :spots
  end

控制器中的方法

  def create
    @spot = Spot.new(spot_params)
    @spot.user = @user
    authorize @spot
    if @spot.save
      redirect_to root_path
    else
      render :new
    end
  end

在创建操作之前,设置用户

  def set_user
    @user = User.find(params[:user_id])
  end

用户 ID 包含在强参数中:

  def spot_params
    params.require(:spot).permit(:spot_date,:time,:location,:number,:bird_id,:user_id)
  end

我仍然收到 NoMethodError 并显示以下消息:

undefined method `spots_path' for #<#<Class:0x00007fba929a7028>:0x00007fba929a56d8>
Did you mean?  user_spot_path

在这里错过了什么?有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。