【问题标题】:Update Attributes not well, updating attributes. id => "id"?更新属性不好,更新属性。身份证=>“身份证”?
【发布时间】:2013-11-02 00:27:38
【问题描述】:

晚上好,我一直在试图弄清楚为什么当我提出 inspect.params 时我得到 id => "id"

请查看我的代码,用于从不更新属性的管理表单将 :approved 更新为 true。我想这是我忽略的东西

表单 index.html.erb

  <% @snippets.each do |snippet| %>
    <tr>
      <td><%= link_to snippet.content %></td>
      <td><%= snippet.created_at.to_date %></td>
      <td><%= render snippet %></td> 
      <td>Status</td>
<td><%= button_to 'Approve', active_snippet_path(snippet.id) %></td>
</tr>

控制器(片段#approve)

def approve
    #@snippet = @book.snippet.find(params[:id])
    if @snippet.update_attribute(:approved, true)
    redirect_to users_path
  else
   render root_path
  end 
end

这个错误显然是由这个位引起的,但不知道为什么:

 def find_book
    raise params.inspect
    @book = Book.find(params[:id])
    @snippet = @book.snippets
    return @book
  end
end

这是我得到的检查。

{"authenticity_token"=>"D70njMSz3iYbVcCCkFIlolPBKeZUsVtFL5pabRT1CMo=", "controller"=>"snippets", "action"=>"approve", "id"=>"id"}

如果您需要其他任何东西,请告诉我。我想清楚地理解为什么这个 put 不适用于嵌套模型。

【问题讨论】:

  • 你在检查什么?
  • 向我们展示您的批准行动路线。 find_book 方法是从哪里调用的?

标签: ruby-on-rails put


【解决方案1】:

问题是您似乎有一组片段 (@book.sn-ps) 设置为 @sn-p,并且正在尝试使用 update_attribute 方法,该方法仅适用于一个实例。如果要更新数组,可以使用以下内容:

Snippet.where(book_id: params[:id]).update_all(approved: true)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多