2017-02-17 38 views
0

我想在Rails中使用块作为提交按钮。正常的用法就是这样。有没有可能Rails的帮助器获取块作为提交按钮?

<%= form_tag("sample_path", method: "post") do %> 
    <%= hidden_field_tag(:post_id, "5") %> 
    <%= submit_tag("Search") %> 
<% end %> 

但我想要做的是以下。

<%= form_tag("sample_path", method: "post") do %> 
    <%= hidden_field_tag(:post_id, "5") %> 
    <div> 
    <div>foo</div> 
    <div>bar</div> 
    </div> 
<% end %> 

我想使用块作为提交按钮。但Rails不认为这是提交按钮。

有谁知道如何实现这一点?谢谢。

+0

我不明白你的问题。什么是sampleBlock? – fanta

+0

我编辑了你提到的部分。我的意思是纯文本块。我为我的误会道歉。 –

回答

2

你有两个选择:

1)您可以使用button_tag为:

<%= button_tag(type: 'submit') do %> 
    <div>foo</div> 
    <div>bar</div> 
<% end %> 

2)添加onclick JS事件:

<div onclick="$('#form-id').submit();"> 
    <div>foo</div> 
    <div>bar</div> 
</div> 

3)绑定事件处理程序到“click”JavaScript事件:

$('#your-div').click(function() { 
    $('#form-id').submit(); 
}); 
0

#submit_tag只是呈现一个常规的HTML输入标记。

submit_tag "Search" 
# => <input name="commit" type="submit" value="Search" /> 

仅使用HTML您可以使用<button type='submit'><input type='submit'>标签提交表单。如果要使用<div>提交表单,则可以将onclick处理程序放在要用来提交表单的元素上。

<%= form_tag("sample_path", method: "post") do %> 
    <%= hidden_field_tag(:post_id, "5") %> 
    <div onclick="$('#your_form_id_here')[0].submit();> 
    <div>foo</div> 
    <div>bar</div> 
    </div> 
<% end %> 

但我建议设置onclick事件处理程序在.js文件中为特定视图。它使代码更有条理。