0

こんにちは、アプリケーションで簡単な検索を作成しようとしています

カレンダー.rb

def self.search(search_condition)
  search_condition = "%" + search + "%"
  find( :all, :conditions => ['city like ?', search_condition])
end

calendar_controller.rb

def index
  @search = @user.calendar.search(params[:search_condition])
  @content_calendars = @user.calendar.all
  @content_calendars_by_dates = @content_calendars.group_by(&:published_on)
  @date = params[:date] ? Date.parse(params[:date]) : Date.today
end

部分的な_search.html.erb

<%= form_tag root_path, :method => 'get'  do %>
  <%= text_field_tag :search, params[:search_condition], :id => 'search_field' %>
  <%= submit_tag "Search", :name => nil %>   
<% end %

私が試してみると、このエラーが発生します:

The request method POST is inappropriate for the URL /. 理由がわかりませんか?

レーキルート

user_calendars GET    /users/:user_id/calendars(.:format)   calendars#index

POST   /users/:user_id/calendars(.:format)          calendars#create

new_user_calendar GET    /users/:user_id/calendars/new(.:format)      calendars#new

edit_user_calendar GET    /users/:user_id/calendars/:id/edit(.:format) calendars#edit

user_calendar GET    /users/:user_id/calendars/:id(.:format)      calendars#show
4

1 に答える 1

0

フォーム タグは、カレンダー インデックス アクションにルーティングする必要があります。このような:

<%= form_tag(user_calendars_path(@user), :method => 'get')  do %>
  <%= text_field_tag :search, params[:search_condition], :id => 'search_field' %>
  <%= submit_tag "Search", :name => nil %> 

<% end %>

編集:それを理解しました、ここに本当の問題があります:

calendars#create のルートは、calendars#index のルートと同じです。

/users/:user_id/calendars(.:format) 

それらを区別するには、routes.rb ファイルを変更する必要があります。伝統的に、複数形のパスは index アクションに行きます。

于 2013-10-22T19:37:34.393 に答える