强参数,如何传递所需的哈希?

时间:2014-07-28 08:25:11

标签: ruby-on-rails ruby-on-rails-4

我有一个从用户索引视图友谊控制器的按钮。 但我无法弄清楚如何正确传递散列,这是强参数所需的。

用户索引视图:

<% @users.each do |user| %>
  <tr>
    <td><%= button_to 'Add friend', friendships_path(:friend_id => user.id), method: :post %></td>
  </tr>
<% end %>

友谊控制器

def user_params
  params.require(:user).permit(:friend_id)
end

我如何通过&#39;:用户&#39;哈希以及&#39;:friend_id&#39; ?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可能最好使用以下内容:

def user_params
   params.permit(:friend_id)
end

<强> PARAMS

系统的 params 部分基本上可以通过params hash和“允许”基于它的相关值来实现,如下所示......

当您提交form_for(因为这是围绕ActiveRecord对象构建)时,您将收到一个这样的参数哈希:

params => {
  "[Model]" => {
    "param_1" => "value",
    "param_2" => "value",
    "param_3" => "value"
  }
}

在这种情况下,您将使用require中的strong_params标记:

def strong_params
   params.require(:model).permit(:param_1, :param_2, :param_3)
end

-

你所拥有的情况是你想使用一个“级别”的params hash:

params => {
  "friendly_id" => "value"
}

在这种情况下,您需要使用以下内容:

def strong_params
   params.permit(:friendly_id)
end

<强>日志

让这个工作的最好方法是观察你正在处理的params哈希。

您可以查看日志并查看每次向Rails发出请求时输出的Params哈希 - 我会查看它,并确定params哈希的结构以确定strong_params方法的类型你应该打电话