从一个模型创建多个表单

时间:2014-02-17 18:47:15

标签: ruby-on-rails activerecord ruby-on-rails-4

我试图从一个模型中略微改变形式。我正在做管理员可以创建不同车辆的网站的管理员部分。客户要求该网站需要单独的链接来创建不同的汽车。

这将是简化模型:

create_table "cars", force: true do |t|
    t.string   "model"
    t.text     "description"
    t.integer  "price"
    t.string   "car_type"
    t.datetime "created_at"
    t.datetime "updated_at"
end

网站会有这样的内容:

Create new Mercedes
Create new Seat
Create new Alfa Romeo
Create new Peugeot
etc

因此,表格中的car_type可能包含Mercedes,Seat,Alfa Romeo,Peugeot等。当管理员点击某个链接时,会打开新页面,他可以在此处创建该类型的汽车。例如,如果他点击Create new Seat,带有Seat徽标的新网站以及页面左侧/右侧的Seat汽车的一些随机图片。

根据点击的链接,汽车类型将自动设置如下:

<%= form_for @car do |f| %>
   <%= f.hidden :car_type, "Seat" %>
<% end %>

我的问题是如何知道点击了哪个链接,以便根据要创建的汽车动态生成该字段?所以,像这样:

<%= form_for @car do |f| %>
   <% if ????? Seat %>
     <%= f.hidden :car_type, "Seat" %>
   <% elsif ????? Mercedes %>
     <%= f.hidden :car_type, "Mercedes" %>
   <% end %>
<% end %>

我会根据选择的链接在该页面上生成不同的制造商徽标和其他内容。每辆车的形式都是一样的。

感谢您的建议:)

2 个答案:

答案 0 :(得分:0)

对于您的汽车控制器,您已定义了路线。这为您提供了一些路径助手,如new_car_path。如果您使用它来创建

之类的链接
new_car_path(car_type: "seat")

然后在你的控制器中你可以使用params[:car_type]

获得这个额外的参数

答案 1 :(得分:0)

您可以采取的另一种方法是为'Car_type'提供select_box并使用JS来监听'onchange'事件。

因此,当您选择“座位”作为车型时,页面会向您的控制器发送请求,然后从响应数据中填充该页面。

简而言之:

  1. 选择“Car_Type”
  2. 在选择汽车类型时,页面向控制器发送AJAX请求
  3. 控制器发送相关数据(JSON或其他)
  4. 使用控制器响应填充页面。
  5. 我希望我很清楚,如果没有,我可以提供有关如何使用这种方法的更多信息:)