0

我正在使用带有url选项的 form_for 助手,如下所示:

<%= form_for  @security_user, url: security_users_manage_securities_path(@security_user),
              html: { class: 'default', method: :put, id: 'security-default-form' } do |f| %>

但是

security_users_manage_securities_path(@security_user)

返回我以下字符串:

/security_users_manage_securities.105

当我需要以下一个时:

/security_users_manage_securities/105

有谁不知道为什么 @security_user 参数的 id 与 ' 连接'而不是' / '?

4

2 回答 2

1

尝试在单数模式下使用这个助手,例如

security_users_manage_security_path(@security_user)

这应该产生

/security_users_manage_securities/105

当您想要获取 url 以列出并且您不应该传递任何参数时使用复数:

security_users_manage_securities_path

返回:

/security_users_manage_securities
于 2013-08-30T11:58:50.760 回答
0

我已经面临这个问题了。

有可能,您已经为“security_users_manage_security”定义了您的路线,其中包括

collection do 
  post :security_users_manage_securities
end
or 
post :security_users_manage_securities, :on => collection

如果你rake routes | grep security_users_manage_securities在终端上点击命令,那么你会找到security_users_manage_securities这样的路线

controller_name/method_name(.:format)    controller_name#method_name

没有选项可以在 url 中传递任何参数。

如果您必须使用参数制作 url,则使用成员定义 url。

如果你也必须在这种情况下传递参数,那么你定义你的 url 就像

security_users_manage_securities_path(:user_id => @security_user)

现在 url 将生成类似controller_name/method_name?user_id = XXX

于 2014-03-17T16:40:00.353 回答