我正在使用带有 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与'。'而不是' / '连接?
答案 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