2014-02-17 88 views
1

我试图使一个模型的表单略有不同。我正在做管理员可以创建不同车辆的网站的管理员部分。客户要求该网站需要单独链接以创建不同的汽车。从一个模型创建多个表单

这将简化模型:

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表里面可以包含奔驰,西亚特,阿尔法罗密欧,标致等。当admin点击某个链接,新的页面打开,他可以创建该类型的汽车。例如,如果他点击了Create new 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 %> 

同样的方式,我会产生不同的制造商的标志和其他的东西在该网页取决于所选择的链接。每辆车的表格都是一样的。

谢谢你的建议:)

回答

0

对于你的汽车控制器,你已经定义了路线。这给你一些路径帮手,如new_car_path。如果你用它来创建链接像

new_car_path(car_type: "seat") 

然后在你的控制器就可以得到这种额外的PARAM与params[:car_type]

0

另一种方法,你可以采取是为“Car_type”提供select_box并用JS听'onchange'事件。

因此,当您选择'座位'作为汽车类型时,页面会将请求发送给您的控制器,然后从响应数据填充页面。

简而言之:

  1. 关于 'Car_Type'
  2. 在选择汽车类型选择框,页发送AJAX请求到控制器
  3. 控制器发送相关数据(JSON或任何)
  4. 用控制器响应填充页面。

我希望我很清楚,如果不是我可以提供关于如何使用这种方法:)

更多信息