Не могу видеть переменную из контроллера в представлении - Rails 6 - PullRequest
4 голосов
/ 22 февраля 2020

Меня зовут Карлос, я пишу, и я новичок в Rails 6.

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

Я использую форму form_with отправки параметров (без модели) на URL-адрес контроллера.

Форма в Meteo View (app \ views \ meteo) \ form. html .erb):

Отправка параметров ": condition_met" в "URL-адрес контроллера брифинга":

<div class="form-group text-center">
    <%= form_with url: briefing_show_path, id: "met" do |fo| %>
        <div class="field">
           <%= fo.label "Condición Actual" %><br>     
           <%= fo.text_area(:condition_met) %>
        </div>
           <%= fo.submit "Enviar" %>
    <% end %>
</div>

Контроллер брифинга (приложение \ controllers \riefing_controller.rb):

Попытка сохранить значение «[: condition_met]» в «@condition_met»:

def show
  if params.has_key?(:condition_met)
     @condition_met = params[:condition_met]
  end
end

Просмотр брифинга (app \ views \riefing \ show. html .erb):

Попытка показать значение "[: condition_met]" в представлении:

<div>
 <%= "#{@condition_met} " %>
</div>

Консоль фактически показывает, что Ha sh был отправлен на URL, когда я нажимаю на кнопку отправки:

Started POST "/briefing/show" for 127.0.0.1 at 2020-02-22 10:24:42 -0300
Processing by B**riefingController#show** as JS
  **Parameters: {"condition_met"=>"Test"**, "commit"=>"Enviar"}
User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 5], ["LIMIT", 1]]
  ↳ app/controllers/briefing_controller.rb:4:in `show'
  Rendering briefing/show.html.erb within layouts/application
  Rendered briefing/show.html.erb within layouts/application (Duration: 1.1ms | Allocations: 211)
[Webpacker] Everything's up-to-date. Nothing to do
  Rendered partials/_nav.html.erb (Duration: 2.7ms | Allocations: 5906)
Completed 200 OK in 68ms (Views: 64.3ms | ActiveRecord: 0.1ms | Allocations: 25974)

Ничего не отображается в представлении с: <% = " # {@ condition_met} "%>.

Я попробовал раствор в Интернете, но ничего не помогло.

С уважением!

UPADTE:

Это мой маршрут. rb:

  get "meteo", to:"meteo#show"
  get "meteo/form", to:"meteo#form"
  post "meteo/form", to:"meteo#form"

  get 'briefing/index'
  get 'briefing/show'
  post "briefing/show", to:"briefing#show"

Я использовал инспектор браузера и увидел, что при выполнении POST инспектор показывает переменную в ответе, но когда я go на странице просмотра, она не отображается:

post

Если я использую <% = @ condition_met.inspect%>, я получаю «ноль»

1 Ответ

2 голосов
/ 23 февраля 2020

form_with по умолчанию ajax запрос, который вы не обрабатываете в действии show, добавьте local: true для решения проблемы

<%= form_with url: briefing_show_path, local: true, id: 'met' do |fo| %>

Попробуйте.

...