我正在尝试使用button_to来调用控制器。我尝试了很多变化似乎没什么用。
在我的index.html.erb中,我有
<%= button_to "Clear Search", { :controller => 'documents', :action => 'reset_search'} %>
在我的文档控制器中,我有
helper_method :reset_search
def reset_search
@documents = Document.all
$search = nil
params[:search] = nil
redirect_to documents_path
$temp2 = 'testing 1 2 3'
end
在索引上,我将以下内容放在底部。
$temp2 <%= $temp2 %>
基于$ temp2变量,我可以看到单击按钮时没有进入reset_search方法,因为$ temp2的内容没有变化
实际让按钮调用reset_search方法需要做什么?
答案 0 :(得分:1)
您可以使用ajax在点击时调用该方法:
$('.whatever-button-class').on('click', function(e){
e.preventDefault();
$.ajax({
type: 'GET',
url: '/documents/reset_search', // make sure you have a route
data: {
// whatever data you want to send as key-value pairs
}
}).done(function(ajax_response){
console.log(ajax_response)
})
})
在该控制器操作中:
def reset_search
# whatever you want to do
render :json => {data: "Huzzah!"} # whatever data you want to pass back
end
答案 1 :(得分:0)
问题是我在另一个表单标签中有我的button_to。我在&lt;%end%&gt;之后移动了它它现在按预期工作。
<%= form_tag documents_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
<% end %>
<% if $search != '' then %>
<%= button_to "Clear Search", { :controller => 'documents', :action => 'reset_search'} %>
<% end %>