使用form_tag进行路由

时间:2013-11-29 01:16:57

标签: ruby-on-rails ruby ruby-on-rails-3 routes

现在我正在尝试在index.html.erb(成员)的页面上设置一个表单。我希望表单显示搜索结果,并希望它不要移动到其他页面。我想在index.html.erb(成员)本身上显示结果。

但是下面的代码使应用程序在按下搜索按钮后移动到show.html(成员)。我不知道为什么会这样。你能给我一些建议吗?

现在我正在尝试根据我的教科书设置搜索窗口。但我失败了,下面的错误信息。虽然这只是一个语法错误,但我不明白原因。你能给我一些建议吗?

☆index.html.erb(成员控制员)

<h1>Listing users</h1>
<p>※登録されているメンバーのリストです。</p>

<%= form_tag :action => 'index' do %>
 <div class = "field">
  <%= label_tag 'place', '活動場所:' %><br />
  <%= text_field_tag 'place' %>
 </div> 
 <%= submit_tag '検索' %>
<% end %>

<%= @places_field %> 

☆会员控制器

def index
    if !checklogin? then return end #
      @members = Member.all
      @places_field = Member.where("place = ?", params[:place])

     respond_to do |format|
       format.html # index.html.erb
       format.json
     end 
  end

☆routes.rb中

MiniSNS::Application.routes.draw do

  resources :group_message_comments

  resources :group_messages do
    resources :group_message_comments
  end

  root :to => 'members#login'
  match '/groups/join'
  resources :group_messages

  resources :groups do 
  resources :group_messages
  end

  match '/members/new'


  resources :index
  resources :groups
  post 'groups/:id' => 'group#show'
  post '/groups/new'
  post '/index/index'

  match '/members/login'
  match '/members/logout'
  match '/members/friend'
  match '/members/show'
  post '/messages/comment'

  resources :comments
  resources :messages
  resources :friends
  resources :members

 #OmniAuth
  match "/auth/:provider/callback" => "sessions#callback"
  match "/logout" => "sessions#destroy", :as => :logout
  match '/auth/failure', to: redirect('/') 

1 个答案:

答案 0 :(得分:0)

首先,您必须在remote => true上添加submit_tag,例如:

<%= submit_tag '検索', :remote => true %>

然后在您的控制器上,使用以下命令添加返回js:

respond_to do |format|
  format.html # index.html.erb
  format.json
  format.js
end

创建名为index.js.erb的新视图,并使用Javascript代码填充该文件以更新您的地点字段,最简单的方法如下:

index.html.erb 上,请确保您拥有此类代码:

<div id="place_field_section"><%= render 'place_field' %></div>

当然,您应该有一个名为_place_field.html.erb的部分名称,例如:

<table>
  <tr>
    <th>Foo</th>
    <th>Bar</th>
  </tr>

<% @place_fields.each do |place_field| %>
  <tr>
    <td><%= place_field.foo %></td>
    <td><%= place_field.bar %></td>
  </tr>
<% end %>
</table>

然后在 index.js.erb

$("#place_field_section").html("<%= escape_javascript(render('place_field')) %>");

这是你的意图吗?如果我错了,请纠正我。