【问题标题】:rails simple_form Controller#create as HTMLrails simple_form Controller#create as HTML
【发布时间】:2016-04-19 17:22:39
【问题描述】:

我对 simple_form_for 有疑问, 如果我在表单中选择了很多数字,我会回滚,无法验证。

我有这个错误:

Processing by SudokusController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Qafet...", "sudoku"=>{"number"=>"1, 2"}, "commit"=>"Submit"}

但在终端 (rails c) 中它可以工作....

我无法解决这个问题:

_form.html.erb:

<%= simple_form_for @sudoku do |f| %>  
<% (1..9).each do |x| %>
      <div class="checkbox">
        <label>
          <input type="checkbox" name="sudoku[number][]" id="optionsCheckbox<%= x %>" value="<%= x %>" />
          <%= x %>
        </label>
      </div>
    <% end %>
<% end %>

数独.rb:

validates :number, presence: true

在数独控制器中:

def sudoku_params
    params.require(:sudoku).permit(:number)
end

在我的数据库中

数独(数字:字符串)

坦克为您提供帮助

【问题讨论】:

  • 您发布为错误的代码部分实际上不是错误。请在问题中发布错误。
  • 您好,请耐心等待,问题出在问题中,但如果您还有其他需要,我不知道还有什么帖子。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 simple-form


【解决方案1】:

参数的"sudoku"=&gt;{"number"=&gt;"1, 2"} 行看起来不适合复选框列表。问题可能在于您打印复选框 HTML 的方式。尝试将其更新为:

<input type="checkbox" name="sudoku[number][]" id="optionsRadios<%= x %>" value="<%= x %>" />

附言。有空格,字段名已更改。

【讨论】:

  • 您好,坦克但不工作,我有同样的问题...空间在 stakoverflow 中,不在我的代码中...对不起...
  • 能否请您添加这 9 个复选框的渲染 HTML?
  • 我已经发布了 html。
  • 你的params在这之后有变化吗?我刚刚检查过,现在应该是"sudoku"=&gt;{"number"=&gt;[1, 2]}。此外,您可以使用@sudoku.errors.full_messages 检查哪些验证未通过。
  • 然后,向我们展示验证错误文本。我在之前的评论中提供了一个代码。
【解决方案2】:

我将控制器更改为:

def sudoku_params
    params.require(:sudoku).permit(number:[])
end

我的问题解决了

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多