如何使用button_to提交表单?

时间:2015-10-18 22:43:18

标签: ruby-on-rails ruby

我需要提交并保存一些数据。我需要表单中的一些帖子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(。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

我拒绝投票的原因是迈克K的回答是因为报价的索引似乎不是问题所在:

enter image description here

我认为问题出在于您如何在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 }

enter image description here

注意:<input type="hidden" name="message_post" value="post_ids%5B%5D=1&amp;post_ids%5B%5D=2" />

这就是为什么你收到你的错误(你的数组中没有嵌套) - 你的params看起来像:"message_post" => "post_ids%5B%5D=1&amp;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 }

enter image description here

-

如果您想保留嵌套,可以使用following comment

  

请注意,params选项目前不允许嵌套哈希。   示例:不允许params: {user: {active: false}}。您可以   使用uglyparams绕过这个:{:"user[active]" => true}

params: {:"message_post[post_ids]" => ["1","2"]}

enter image description here

答案 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"]}