簡體   English   中英

Rails發布到另一個控制器

[英]Rails Posting to another Controller

我有一個稱為orders的控制器。 在該控制器中,有一個newcreate動作。 用戶可以從訂單/新頁面創建訂單,但是我也希望他們能夠從主頁創建訂單。 到目前為止,這是我嘗試做的

<%= 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 ,並且由於某種原因信息沒有被傳遞。

有什么建議么? 提前致謝

@Kreek,很好地解釋了這個問題。 與手動處理這些參數相比,更好的方法是像這樣更改表單:

<%= form_for Order.new do |f| %>
  <%= f.text_field :first_name %>
  <%= f.text_fiels :last_name %>
  <%= f.submit %>
<% end %>

您要發布到該控制器,但是表單是通用的(未分配給像form_for這樣的模型),因此參數僅以params [:first_name] params [:last_name]的形式出現。 在這種情況下,您將必須手動將這些值映射到Order模型的新實例。

與您的信念相反。 您的first_name和last_name參數實際上已傳遞到create動作中。 只是它們以您不期望的方式傳遞,因此請在日志文件中檢入create操作,您將在此處看到它們。

您的問題在於以下事實:字段未嵌套在訂單參數中,這是您創建操作所期望的。

我的意思是,您的create動作將期望有params [:order],而實際上您在create動作中將需要params [:first_name]和params [:second_name]而不是您想要的。

解決方案?

像這樣將字段嵌套在訂單哈希中

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

任務完成 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM