form_with не перенаправляет, когда это должно - PullRequest
0 голосов
/ 06 июля 2018

Я борюсь с тем, что я считаю очень простой ошибкой, и все же у меня нет опыта Rails, чтобы определить, где эта ошибка.

У меня есть следующая форма:

<%= form_with(url: '/bills/viewer', method: :get) do |f| %>

  <%= f.label :congress, 'Congress (i.e. 112)' %>
  <%= f.number_field :congress, class: 'form-control' %>

  <%= f.label :bill_type, 'Bill type' %>
  <%= f.radio_button :bill_type, 'hr' %><%= ' House of Representatives' %>
  <%= f.radio_button :bill_type, 's' %><%= ' Senate' %>
  <%= f.radio_button :bill_type, 'hjres' %> <%= 'House Joint Resolution' %>
  <%= f.radio_button :bill_type, 'sjres' %><%= ' Senate Joint Resolution' %>
  <%= f.radio_button :bill_type, 'hconres' %><%= ' House Concurrent Resolution' %>
  <%= f.radio_button :bill_type, 'sconres' %><%= ' Senate Concurrent Resolution' %>
  <%= f.radio_button :bill_type, 'hres' %><%= ' House Resolution' %>
  <%= f.radio_button :bill_type, 'sres' %><%= ' Senate Resolution' %>

  <%= f.label :bill_number, 'Bill number' %>
  <%= f.number_field :bill_number, class: 'form-control' %>

  <%= f.submit "Submit", class: 'form-control' %>

<% end %>

В моем файле config / rout.rb у меня есть следующая строка:

get '/bills/viewer', to: 'bills#show'

Идея состоит в том, что я хочу, чтобы форма передавала предоставленную информацию в действие "show" в моем файле bills_controller.rb, который я приведу ниже ...

def show
  @bill = Bill.where("congress = ? AND bill_type = ? AND bill_number = ?", bill_params[:congress], bill_params[:bill_type], bill_params[:bill_number]).take
  if @bill.nil?
    create
  end
  @bill_xml = RestClient.get(bill_params[:bill_link])
  render :xml => @bill_xml
  puts "Called to show!"

... и затем для перенаправления пользователя в соответствующий файл show.html.erb, который я приведу ниже ...

<% provide(:title, "#{ @bill[:congress] } #{ @bill[:bill_type].upcase } #{ @bill[:bill_number] } | ") %>
<h1><%= "#{ @bill[:congress] } #{ @bill[:bill_type].upcase } #{ @bill[:bill_number] }" %></h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= puts @bill_xml %>
    <%= render @bill_xml %>
  </div>
</div>

<% puts "RENDERED..." %>

Две строки "put" находятся там для моей собственной цели отладки. Тот, что в методе show, ведет себя как ожидалось, и моя консоль отображает «Вызван для показа!». Другая строка ставит "RENDERED ..." не отображается. Более того, процесс завершается до 200 ОК.

Я включаю вывод своей консоли после нажатия кнопки «Отправить» ниже ...

Started GET "/bills/viewer?utf8=%E2%9C%93&congress=112&bill_type=hr&bill_number=1027&commit=Submit" for 127.0.0.1 at 2018-07-05 15:05:51 -0700
Processing by BillsController#show as JS
  Parameters: {"utf8"=>"✓", "congress"=>"112", "bill_type"=>"hr", "bill_number"=>"1027", "commit"=>"Submit"}
Unpermitted parameters: :utf8, :commit
Unpermitted parameters: :utf8, :commit
Unpermitted parameters: :utf8, :commit
  Bill Load (0.1ms)  SELECT  "bills".* FROM "bills" WHERE (congress = '112' AND bill_type = 'hr' AND bill_number = '1027') LIMIT ?  [["LIMIT", 1]]
Unpermitted parameters: :utf8, :commit
Called to show!
Completed 200 OK in 2980ms (Views: 0.6ms | ActiveRecord: 0.7ms)

Но если перенаправить форму в show.html.erb, вывод консоли должен возвращать 3XX, нет?

Мое (явно ошибочное) понимание: когда я вызываю действие show в моем bills_controller, веб-сайт должен автоматически перенаправлять на страницу views / bills / show.html.erb. Почему это не так, и как я могу идиоматически корректно редактировать мой код, чтобы произошло желаемое перенаправление?

Помощь очень ценится.

1 Ответ

0 голосов
/ 06 июля 2018

Ошибка была устранена путем установки local: true в теге form_with. Тем не менее, мне неясно, почему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...