Проводка Rails другому контроллеру - PullRequest
1 голос
/ 05 августа 2011

У меня есть контроллер с именем orders. В этом контроллере есть действие new и create. Пользователи могут создавать заказы на странице заказов / новых, но я также хотел бы, чтобы они могли создавать заказы с главной страницы. Вот что я пытался сделать до сих пор

<%= form_tag :controller => "orders", :action => "create" do %>
  <%= text_field_tag :first_name, 'Test1' %>
  <%= text_field_tag :last_name, 'Test2' %>
  <%= submit_tag %>
<% end %>

Однако, она отклоняет информацию и возвращает меня на страницу orders/new. Причина, по которой он отвергает это потому, что у меня есть validates_presence_of в этих двух полях, и информация по какой-то причине не передается.

Есть предложения? Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

@ Крик, хорошо объяснил проблему.Лучше, чем обрабатывать эти параметры вручную, это изменить форму следующим образом:

<%= form_for Order.new do |f| %>
  <%= f.text_field :first_name %>
  <%= f.text_fiels :last_name %>
  <%= f.submit %>
<% end %>
1 голос
/ 05 августа 2011

Вы отправляете на этот контроллер, но форма является общей (не присваивается модели, как с form_for), поэтому параметры поступают просто как params [: first_name] params [: last_name]В этом случае вам придется вручную сопоставить эти значения с новым экземпляром модели заказа.

0 голосов
/ 05 августа 2011

Вопреки вашему убеждению. Ваши параметры first_name и last_name фактически передаются в действие create. Просто они передаются так, как вы не ожидаете Проверьте в файле журнала действие создания, вы увидите их там.

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

Я имею в виду, что ваше действие создания будет ожидать params [: order], когда на самом деле вам понадобятся params [: first_name] и params [: second_name] в действии create, а это не то, что вы хотите сделать.

Решение?

вложите поля внутри хеша порядка так же

  <%= text_field_tag :order[:first_name], 'Test1' %>
  <%= text_field_tag :order[:last_name], 'Test2' %>

Работа сделана:)

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