Luc*_*lan 5 controller ruby-on-rails view
我的情况是我有更多的控制器共享一个视图,我试图改变dinamycally动作在表单上传递控制器中定义的变量
尝试一些解决方案我观察到如果我在url_for_options form_tab变量中有一个nil变量,则视图中的表单具有从调用视图的位置的正确控制器路径
<%= form_tag nil, :method => :get, :class => 'search' do %>
它是一个bug还是一个功能?
请注意,如果传递空字符串而不是nil,则会产生稍微不同的行为:
form_tag nil
Run Code Online (Sandbox Code Playgroud)
创建
<form action="(URL based on current controller and action)">....
Run Code Online (Sandbox Code Playgroud)
而
form_tag ""
Run Code Online (Sandbox Code Playgroud)
创建
<form action>....
Run Code Online (Sandbox Code Playgroud)
如果您所在页面的URL是"/ foo/bar"(对于FooController#bar),则两者在功能上是等效的.如果当前页面的URL是"/富/酒吧?A = 1&B = 2",前者将继续指向只是"/富/酒吧",而后者将导致提交到完整的网址形式(包括查询字符串).这是因为后者使用HTML标准(无操作或空操作=使用当前URL,包括查询字符串).相反,前者触发Rails标准(url_for =>使用当前控制器和方法为nil).
只要认为是有这样的情况,其中一个动作体的票据的HTML标准是比较有用的(即您想查询字符串参数被粘),并在零和"之间的行为的细微差别"很容易错过值得一提的.
解决方案是在表单上使用空操作属性将该表单提交到当前页面。RFC 2396中对此进行了描述
4.2. 同一文档参考文献
不包含 URI 的 URI 引用是对
当前文档的引用。换句话说,
文档内的空 URI 引用被解释为对该文档开头的引用,而仅包含片段标识符的引用是
对该文档的已识别片段的引用。此类
引用的遍历不应导致额外的检索操作。
但是,如果 URI 引用出现在始终旨在
产生新请求的上下文中(如 HTML 的 FORM 元素的情况)
,则空 URI 引用表示当前文档的基本 URI
,应替换为该 URI当转化
为请求时。
一个奇怪的行为,当
url_for_options == nil
<form accept-charset="UTF-8" action="/welcome" class="search" method="get">
url_for_options == ""
<form accept-charset="UTF-8" action class="search" method="get">
归档时间: |
|
查看次数: |
1836 次 |
最近记录: |