form_for提交一些不属于该对象的额外参数?

时间:2014-02-14 13:45:59

标签: ruby-on-rails ruby-on-rails-3 form-for

我想提交一些不属于该模型对象的额外参数。这是我的代码示例

= form_for Comment.new, :url => notes_path({:pined_feed_item => ""}), :html => {class: 'form clearfix', id: 'add_post_form'}, remote: true do |form|
    .control-group
      = form.text_area :text, :placeholder => 'Post to the community', :cols => nil, :rows => nil, :class => 'mention expand-without-submit'
      = check_box_tag :pined_feed_item
      pinged post
    = submit_tag "Post your message", class: 'btn btn-success btn-mini'

我想在控制器级别获取check_box值,但是当我在那里检查时它会给我空字符串

3 个答案:

答案 0 :(得分:1)

它会为您提供一个空字符串,因为您没有设置任何值。尝试按API中描述的方式使用check_box_tag。第二个参数(pined)是复选框的值,第三个参数是复选框的状态(如果要检查它的话)。例如:

...
check_box_tag 'pined_feed_item', 'pined', true
# => <input checked="checked" id="pined_feed_item" name="pined_feed_item" type="checkbox" value="pined" />
...

在这种情况下,控制器中的参数数组将类似于:

# params.inspect
"...{:pined_feed_item=>"pined"}..."

因此,您可以根据此条件在控制器中进行检查

if params[:pined_feed_item] == 'pined'
...
end

答案 1 :(得分:1)

{:pined_feed_item => ""}删除url。这会覆盖复选框pined_feed_item的值。

当您选中复选框并提交表单时,您会看到pined_feed_item"=>"1",如果未选中并提交,则此参数不会成为params哈希的一部分。 希望,这有帮助。

答案 2 :(得分:0)

您如何访问额外的参数?

它应该以{{1​​}}的形式提供。

如果您想使用params[:pined_feed_item]访问它们,则需要将视图更改为params[:comment][:pined_feed_item]