1

私はレールが初めてです。今日、私はそれを修正する方法がわからないという問題に遭遇しました。基本的に、入力領域と送信ボタンを 1 つの Web ページに配置しようとしています。入力値は params[:name] に格納され、issue コントローラーで定義された export_issues メソッドに渡されます。これは、ビューファイルがどのように見えるかです

    <%= form_tag(:controller => 'issues', :action => 'export_issues') do%>
    <p>
    <%= label_tag :name, "name:" %>
    <%= text_field_tag :name, params[:name]%>
    </p>
    <%= submit_tag "Submit"  %>

「送信」をクリックすると、「ルーティングエラー」が発生しました。しかし、F5 キーを押してエラー ページを更新するか、127.0.0.1/issues/export_issues と入力すると、思いどおりに動作します。

これは、routes.rb の issue コントローラーに関連するコードです。

resources :issues, :only => [:index, :destroy] do
  member do
    post 'create_comment'
    get 'mark_readed'
end
collection do
  get 'export_issues'
  delete 'destroy_comment'
end
end

基本的に export_issues が行うことは、データベースを読み取り、データを CSV ファイルにエクスポートすることです。form_tag コードが参加しなくても問題なく動作しました。

それで、問題は何ですか?

4

1 に答える 1

0

理由は簡単です。デフォルトでform_tagは、フォーム要素を作成しmethod=postます。お気に入り:

form_tag('/myposts')

次のようにフォームタグを作成します。

<form action="/myposts" method="post">

ただし、ルーティングによると、 のみを受け入れますget。したがって、フォームの開始タグは次のようになります。

<%= form_tag(:controller => 'issues', :action => 'export_issues', :method => :get) do%>

詳細については、apidocsを参照してください。

于 2012-09-27T09:12:18.560 に答える