【发布时间】:2019-12-15 02:50:51
【问题描述】:
在帖子表单错误中显示“用户必须存在”。
正在接收正确的参数,包括 user_id,但仍然拒绝所有参数。 我怀疑它与哈希数组有关,因为它们来自另一个控制器,但通过一个表单。
所以当我检查 Post 参数时,它会说:
<ActionController::Parameters {"email"=>"test@test.com", "user_id"=>"2", "items_bought"=>"[#<LineItem id: 3, product_id: 1, cart_id: 3, quantity: 1>, #<LineItem id: 4, product_id: 2, cart_id: 3, quantity: 4>]"} permitted: false>
Simple_form_for @post
<%= simple_form_for @post, :url => user_posts_path do |f| %>
<%= f.error_notification %>
<ul>
<%= @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<%end%>
</ul>
<%= f.input :email, :input_html => { value: "#{current_user.email}" } %>
<%= f.input :user_id, :as => :hidden, :input_html => { value: "#{current_user.id}" } %>
<%= f.input :items_bought, :as => :hidden, :input_html => { value: "#{current_cart.line_items.to_a}" } %>
<%= f.error :base %>
<%= f.button :submit %>
<% end %>
帖子控制器
class PostsController < ApplicationController
def new
@user = current_user
@post = Post.new
end
def create
@user = current_user
@post = current_user.posts.build(params[:post_params])
if @post.save
render plain:
params[:post].inspect
else
render 'new'
end
end
private
def post_params
params.require(:post).permit(:email, :user_id, items_bought: [:LineItem_id [], :product_id[], :cart_id[], :quantity[]])
end
end
后模型
class Post < ApplicationRecord
belongs_to :user, dependent: :destroy
end
任何帮助将不胜感激
【问题讨论】:
-
这可能是由于_post.json.jbuilder.rb ...... json.extract! post, :user_id, :email, items_bought: [:LineItem_id [], :product_id[], :cart_id[], :quantity[]], :created_at, :updated_at json.url user_posts_url(user,post, 格式: :json )
-
这看起来像是一次非常失败的尝试,应该使用嵌套属性或拆分为多个控制器操作来完成。
-
您能否重新表述问题并询问您实际想要完成的工作,而不是您认为的解决方案?
标签: arrays ruby-on-rails forms hash actioncontroller