0

ルート パスとして使用する controller#new があります。

Routes.rb

  resources :participants

  root :to => 'participants#new'

レーキルート

    participants GET    /participants(.:format)          participants#index
                 POST   /participants(.:format)          participants#create
 new_participant GET    /participants/new(.:format)      participants#new
edit_participant GET    /participants/:id/edit(.:format) participants#edit
     participant GET    /participants/:id(.:format)      participants#show
                 PUT    /participants/:id(.:format)      participants#update
                 DELETE /participants/:id(.:format)      participants#destroy
            root        /                                participants#new

そして、これは xxx.xx/ にアクセスするだけでうまく機能します

しかし、コントローラーで #new をレンダリングすると、 /participants にリダイレクトされます。これを防ぐにはどうすればよいですか?

  def create

    @participant = Participant.new(params[:participant])

    respond_to do |format|
      if @participant.save
        format.html { redirect_to root_path, notice: "<h2>Tack!</h2> <p>Registrering genomförd, vi har skickat ut ett mail med instruktioner till #{@participant.email}</p>".html_safe }
        format.json { render json: @participant, status: :created, location: @participant }
      else
        format.html { render action: "new" }
        format.json { render json: @participant.errors, status: :unprocessable_entity }
      end
    end
  end

ログ:

Started POST "/participants" for 127.0.0.1 at 2013-03-13 13:21:29 +0100
Processing by ParticipantsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"dXmuTX/ugwgNjc21PPdiSHDGlNXEEGZCRHVIWKELOuw=", "participant"=>{"company"=>"asd", "f_name"=>"asd", "l_name"=>"asd", "email"=>"asd@asd.com", "phone_number"=>"asd", "allergy"=>"asd"}, "commit"=>"Anmäl mig!"}
  MOPED: 127.0.0.1:27017 COMMAND      database=damn_development command={:count=>"models", :query=>{"company"=>"asd", "_type"=>{"$in"=>["Participant"]}}} (0.7780ms)
  MOPED: 127.0.0.1:27017 QUERY        database=damn_development collection=models selector={"email"=>"asd@asd.com", "_type"=>{"$in"=>["Participant"]}} flags=[] limit=1 skip=0 batch_size=nil fields={:_id=>1} (0.5569ms)
  Rendered participants/_form.html.erb (4.7ms)
  Rendered participants/new.html.erb within layouts/application (5.5ms)
Completed 200 OK in 25ms (Views: 19.8ms)
4

2 に答える 2

1

に送信される理由/participantsは、それが create アクションのルートだからです。ルートとフォームを変えないとどうしようもない。ルートでは、作成アクションを「/」に一致させることができますが、post. 次に、フォームでアクションとして「/」を使用します。

于 2013-03-13T12:27:57.190 に答える
0

root / participants#newするときは行を参照してくださいrake routes。あなたのルートはあなたを に連れて行ってくれますparticipants#new

のように、 androutes.rbを使用すると、 andに移動し、どこで を使用しても、 と同等です。root :to => 'participants#new'redirect_to root_pathparticipants#new/root_url

例えば:

次の URL をローカルに書き込む場合:

http://my_host_name/

それは実際に行くつもりです -

http://my_host_name/participants/new

したがって、作成アクションのように、次の行があります。

format.html { redirect_to root_path, notice: "...."}

にリダイレクトしています -

http://my_host_name/participants/new
于 2013-03-13T12:45:37.503 に答える