带有url选项的form_for标记的路径助手会生成错误的URL

时间:2013-07-07 17:12:14

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

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

<%= 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与''而不是' / '连接?

2 个答案:

答案 0 :(得分:1)

尝试在单一模式下使用此帮助程序,例如

security_users_manage_security_path(@security_user)

这应该生成

/security_users_manage_securities/105

当你想要获取列表的url然后你不应该传递任何参数时使用Plural:

security_users_manage_securities_path

返回:

/security_users_manage_securities

答案 1 :(得分: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中传递任何参数。

如果您必须使用参数创建网址,请使用成员定义网址。

如果你也必须在这种情况下传递参数,那么你可以定义你的网址

security_users_manage_securities_path(:user_id => @security_user)

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

的网址