nee*_*zer 11 rest http ruby-on-rails-3
我最近遇到了这个问题:Rails 3 link_to(:method =>:delete)无效
我很困惑,为什么我link_to 'test', test_path(:test => test), :method => :post不工作(为什么它是GETting而不是POSTing).如上面的帖子所示,这是因为我没有Rails javascript文件,它处理动态制作表格:post,:put&:delete.
我不确定我是否特别喜欢依赖javascript为我这样做,因为我希望我的应用程序能够在禁用javascript时完全正常运行; 这就是我喜欢开发的方式(所以我知道我的所有Rails编程功能都能正常工作),当我用javascript连接我的应用程序时,我不必担心重复这个功能,因为我通常会擦除Rails生成的股票javascripts文件.
我从某处读到,从技术上讲,超链接(锚元素)应该只用于GET请求,并且那些按钮(作为表单元素的一部分)应该用于其他方法.
那么,我的两个问题:
link_to ... :method =>当我的视图被呈现时,是否有一个宝石会在我的视图中重写任何表格元素?基本上,我想要的是在我的HAML文件中写这个:
= link_to 'Test Link', some_path(:with => some_resource), :method => :post
Run Code Online (Sandbox Code Playgroud)
...并且我的渲染HTML输出结果如下:
<form action="some_path?with=some_resource" method="post">
<!-- insert appropriate _method hidden field here -->
<!-- add appropriate csrf token and whatnot -->
<button type="submit">Test Link</button>
</form>
Run Code Online (Sandbox Code Playgroud)
...所有link_to具有已定义方法的助手(因此,不会影响其动词为GET的普通链接)将在没有javascript的情况下工作?
我也很感激任何关于这个问题的原因的想法,特别是为什么Rails团队决定将这个功能与javascript绑定而不是通过纯HTML做到这一点?
ALW*_*ALW 22
看起来你真的想要一个单独的元素形式(在这种情况下,一个按钮).如果是这样,你想要button_to帮手:
button_to 'Test Link', some_path(:with => some_resource), :method => :post
这将生成一个带有input[type=submit]元素的表单.
如果没有Javascript,您将无法使用除"GET"之外的HTTP谓词提交的超链接.
如果您需要更多样式/控制所呈现的表单button_to,您可以执行以下操作:
module LinksHelper
def link_form(text, destination, options = {})
form_tag(destination, :method => options.delete(:method)) do
<<-HTML
<!-- some HTML code here -->
<button type="submit">#{text}</button>
<!-- some more HTML code here -->
HTML
end
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11274 次 |
| 最近记录: |