2017-01-07 4 views
0

Überraschenderweise kann ich diesen einfachen form_tag nicht machen, um mir die Parameter zu schicken .. für eine Stunde .. Es hat bei meinem letzten Projekt funktioniert. Ich habe eine Kopie davon gemacht, eine andere Ruby-Version benutzt und jetzt funktioniert es nicht. Habe viele Dinge versucht, aber es funktioniert einfach nicht.Rails form_tag funktioniert nicht mehr

Ich habe diesen Block:

<div class="row"> 
    <div class="col-md-8"> 
    <div id="light-pagination" class="pagination"></div> 
    </div> 
    <div class="col-md-4" style='float:right'> 
    <%= form_tag("/go_to_show_question", class: "form-inline", method: "get") do %> 
     <%= hidden_field_tag(:id, @question_group.id) %> 
     <%= search_field_tag :question, '', size: 5, class: 'form-control' %> 
     <%= submit_tag r("tests.go_to_question"), class: 'btn btn-default' %> 
    <% end %> 
    </div> 
</div><br> 

Ich bin eine Nummer und klicken Eingabe auf ‚Gehe zu hinterfragen‘. Und es sendet nur:

{"controller"=>"question_groups", "action"=>"go_to_show_question", "locale"=>"en"} 

Wo ist 'ID' und 'Frage'? Warum werden sie nicht zusammen geschickt?

Ich glaube, das ist etwas Dummes, aber ich kann nicht finden, was .. Es hat früher funktioniert. Ich habe es nicht geändert, glaube ich.

Dies ist die erzeugte HTML

<div class="row"> 
    <div class="col-md-8"> 
    <div id="light-pagination" class="pagination"></div> 
    </div> 
    <div class="col-md-4" style='float:right'> 
    <form class="form-inline" action="/go_to_show_question" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" /> 
     <input type="hidden" name="id" id="id" value="28" /> 
     <input type="search" name="question" id="question" value="" size="5" class="form-control" /> 
     <input type="submit" name="commit" value="Go to question" class="btn btn-default" /> 
    </form>   
    </div> 
</div><br> 

Routen:

Rails.application.routes.draw do 

    ... other routes ... 

    scope ":locale", locale: /#{I18n.config.available_locales.join("|")}/ do 

    ... other routes ... 

    get 'go_to_show_question' => 'question_groups#go_to_show_question' 

    ... other routes ... 

    end 
    get '*path', to: redirect("/#{(I18n.locale)}/%{path}"), constraints: lambda { |req| !req.path.starts_with? "/#{I18n.locale}/" } 
    match '', to: redirect("/#{(I18n.locale)}"), via: [:get, :post, :put, :delete] 
end 

Controller:

class QuestionGroupsController < ApplicationController 
    def go_to_show_question 
    redirect_to show_question_group_path(:id => params[:id], :question => (params[:question].to_i - 1)) 
    end 
end 

Diese Anfrage mein Controller erreicht. aber ohne ID, Frage params.

Und das ist das Log

Processing by QuestionGroupsController#go_to_show_question as HTML 
    Parameters: {"locale"=>"en"} 
    User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 
{"controller"=>"question_groups", "action"=>"go_to_show_question", "locale"=>"en"} 
Redirected to http://localhost:3000/en/show_question_group?question=-1 
Completed 302 Found in 2ms (ActiveRecord: 0.2ms) 
+0

zeigen Sie mir Ihre Routen – uzaif

+0

sein Aussehen wie Sie erklären Routen in 'locale' scop – uzaif

+0

' go_to_show_question /: Diese Route id' versucht – uzaif

Antwort

1

die Antwort gefunden:

<%= form_tag("/en/go_to_show_question", class: "form-inline", method: "get") do %> 
     <%= hidden_field_tag(:id, @question_group.id) %> 
     <%= search_field_tag :question, '', size: 5, class: 'form-control' %> 
     <%= submit_tag r("tests.go_to_question"), class: 'btn btn-default' %> 
    <% end %> 

ich gerade nur knapp sein Ziel das Gebietsschema vor meiner URL der Form hinzufügen. Sogar meine Route funktionierte einwandfrei, aber der locale Bereich analysierte die Anfrage und löschte meine Params.

Es war wie

Started GET "/go_to_show_question?utf8=%E2%9C%93&id=28&question=88&commit=Go+to+question" for 127.0.0.1 at 2017-01-07 16:41:08 +0100 

in

analysiert
Started GET "/en/go_to_show_question" for 127.0.0.1 at 2017-01-07 16:41:08 +0100 
Processing by QuestionGroupsController#go_to_show_question as HTML 
    Parameters: {"locale"=>"en"} 
Verwandte Themen