我需要提交并保存一些数据。我需要表单中的一些帖子ID:
System.Net.Http
如何通过button_to获取ID?我的代码:
def message_post_collection_params
params.require(:message_post).permit(
{ post_ids: [] }
)
end
但是它出现了错误:
button_to('Submit', approve_collection_message_posts_path, params: { message_post: { post_ids: ['1', '2'] } }, data: { config: 'Are you sure?', remote: true })
在线上params.require(:message_post).permit(。
我该如何解决?
答案 0 :(得分:0)
我拒绝投票的原因是迈克K的回答是因为报价的索引似乎不是问题所在:
我认为问题出在于您如何在params
中分配button_to
:
button_to 'Submit', approve_collection_message_posts_path, params: { message_post: { post_ids: ['1', '2'] } }, data: { config: 'Are you sure?', remote: true }
注意:<input type="hidden" name="message_post" value="post_ids%5B%5D=1&post_ids%5B%5D=2" />
这就是为什么你收到你的错误(你的数组中没有嵌套) - 你的params看起来像:"message_post" => "post_ids%5B%5D=1&post_ids%5B%5D=2"
有一种廉价的解决方法:
def message_post_collection_params
params.permit(post_ids:[])
end
= button_to 'Submit', path_helper, params: { post_ids: ["1","2"] }, data: { config: 'Are you sure?', remote: true }
-
如果您想保留嵌套,可以使用following comment:
请注意,params选项目前不允许嵌套哈希。 示例:不允许
params: {user: {active: false}}
。您可以 使用uglyparams绕过这个:{:"user[active]" => true}
params: {:"message_post[post_ids]" => ["1","2"]}
答案 1 :(得分:-1)
这应该有效:
{ :message_post => { post_ids: ['1', '2'] } }
以下是rails控制台中的一个示例:
2.2.3 :017 > params = { :message_post => { post_ids: ['1', '2'] } }
=> {:message_post=>{:post_ids=>["1", "2"]}}
2.2.3 :018 > parameters = ActionController::Parameters.new(params)
=> {"message_post"=>{"post_ids"=>["1", "2"]}}
2.2.3 :019 > parameters.require(:message_post).permit(
2.2.3 :020 > { post_ids: [] })
=> {"post_ids"=>["1", "2"]}