单击button_to不会将我带到预期的方法

时间:2016-03-16 15:55:52

标签: ruby-on-rails

我正在尝试使用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方法需要做什么?

2 个答案:

答案 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 %>