2013-07-07 69 views
0

我使用的form_for助手与网址选项是这样的:路径帮手产生错误的URL

<%= 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与“串联。'而不是'/'?

回答

1

尝试以单数模式使用此帮手,例如

security_users_manage_security_path(@security_user) 

这应该产生时,你想获得网址列出

/security_users_manage_securities/105 

复数使用,那么你不应该通过任何PARAMS:

security_users_manage_securities_path 

回报:

/security_users_manage_securities 
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,然后使用member定义url。

如果你必须通过参数在这种情况下也,那么你定义网址有些像

security_users_manage_securities_path(:user_id => @security_user) 

现在的网址,将产生类似controller_name/method_name?user_id = XXX