现在我只需点击此链接中的“x”即可在awisprotect_path
使用ajax(:remote =>'true')调用方法
<%= link_to "x",
awisprotect_path,
:remote => true,
:method => :post,
%>
控制器操作呈现jquery,因此响应包含在视图中的html中
<div class="awishanswer">
</div>
这一切都很好。但是,我没有点击“x”,而是希望用户点击按钮并获得相同的结果。所以我基本上只是想把链接信息
<%= link_to "x",
awisprotect_path,
:remote => true,
:method => :post,
%>
进入此按钮
<button class="btn small primary" >
check
</button>
所以我创建了这个表单并将其放在部分
中<%= form_tag(:controller => "sessions", :action => "awisprotect", :remote => true, :method => "post") do %>
<button type="submit" class="btn small secondary">check awis</button>
<% end %>
但问题是呈现js的控制器操作不会将操作的结果放入html div中。相反,它重定向到空白页然后打印jquery方法,结果是我用控制器操作检查的结果。空白页面只显示了这个......
$('div.awishanswer').html(' html to be inserted in div');
有人可以解释一下吗?
在网址中说
http://localhost:3000/awisprotect?method=post&remote=true
答案 0 :(得分:1)
您遇到问题的原因可能是因为您使用form_tag
帮助程序使用url生成中的:remote和:方法值,而不是处理表单。正确的用法可能是这样的:
<%= form_tag({:controller => "sessions", :action => "awisprotect"},
:remote => true,
:method => "post")
但是,Rails已经有一个帮助方法来创建一个按钮来提交名为button_to
的数据。它基本上采用与link_to
助手完全相同的参数,所以在你的情况下我可能会这样使用它:
<%= button_to "x", awisprotect_path, :remote => true, :method => :post %>
:方法参数甚至可能被遗漏,因为我认为button_to帮助器默认为POST协议。
答案 1 :(得分:1)
您可以使用一些CSS将链接伪装成一个按钮。这是一个nice article。
这可能比部分和形式的所有这些实验更好。 : - )
答案 2 :(得分:1)
<div class="awishanswer" id="awishanswer">
<% form_remote_tag :url => {:controller => "sessions", :action => "awisprotect"},
:html => {:method => "post"}, :update => "awishanswer" do %>
<input type="submit" class="btn small primary" value="check" />
<% end %>
</div>
行动中的
def awisprotect
@flag = params[:flag] // suppose sending parameter flag from form
// do something
render :partial => 'partial file containing html to send to view'
end
form
submitted
为submit
时,button
将为clicked
。form
update
将在表单中提供带有ID的div,并将html代码从操作中发回。编辑:部分档案
<%if @flag%>
// include some html
<%else%>
// include some other html
<%end%>
答案 3 :(得分:0)
我认为你没有正确包装form_tag的选项。尝试这样的事情:
form_tag( { :controller => :sessions, :action => :awisprotect, :method => post }, { :remote => true } ) do ....
使用button_tag
可能有也可能没有帮助。