【发布时间】:2014-11-17 17:35:39
【问题描述】:
在 Rails 项目中,我对控制器 exchange.rb 有以下控制器操作:
def update_ordid
# Get the active exchange
@exchange = Exchange.find(params[:id])
# Decide which order ID field to update
active_order_field = params[:ordfld]
# Save the order ID
order_id = params[:ordid]
if active_order_field == 1 then
@exchange.order_id_1 = order_id
else
@exchange.order_id_2 = order_id
end
@active_exchange.save
respond_with(@exchange)
end
我已经设置了一个到这个控制器动作的路由:
resources :exchanges do
collection do
get 'update_ordid'
end
end
我想调用这个从交易所 show.html.erb 页面上的表单接受订单 ID 的操作。我需要传递三个值:
- 当前交易所的ID,例如本例中的整数 URL localhost:3000/exchanges/2(这是表单所在的页面)
- 作为文本字段输入的订单 ID
- 操作应更新两个可能的交换字段中的哪一个
接下来我需要创建一个自定义表单,它将这些值作为参数传递给操作。我还没有找到关于如何做到这一点的好教程,但我的第一个想法是设置以下内容:
<%= form_for(@exchange) do |f| %>
<div class="field">
<%= f.label :ordid, "Order ID" %><br>
<%= f.text_field :ordid, class: "form-control" %>
</div>
<% if @isrequestor == true %>
<%f.hidden_field :ordfld, :value => "1" %>
<% else %>
<%f.hidden_field :ordfld, :value => "2" %>
<% end %>
<div class="actions">
<%= f.submit "Submit", class: "btn btn-primary" %>
</div>
<% end %>
这给了我一个 NoMethodError 说明方法 'ordid' 未定义。我猜我需要修改第一行代码以将表单与我设置的自定义操作相关联,但不知道如何正确执行。
【问题讨论】:
标签: ruby-on-rails forms