动态部分

时间:2013-01-14 00:34:11

标签: ruby-on-rails

我正在尝试创建一个表单来创建新产品。在页面顶部,我希望能够选择它是什么类型的产品,并且在表单中填写的表格将在下面填入正确的字段(并且在任何时候,可以更改产品类型)< / p>

我的假设是我应该使用jQuery和AJAX为每个部分呈现不同的部分 - 也就是说,如果用户选择了产品类型,那么相应的表单会加载具有适当形式而没有页面刷新的部分。

就像我以前的帖子一样,我的第一个问题就是确保在rails社区中这是可以接受的。

然而,具有讽刺意味的是,我的问题不在于AJAX或jQuery,而在于部分。我创建了一个名为“_shirt.html.erb”的“衬衫”部分,如下所示:

<% form_for(:shirt, :url => { :action => 'save_to_session' } ) do |f| %>
<table summary="Shirt form fields">
<tr>    
    <th>Shirt Size S:</th>
</tr>
<tr>
    <td><%= f.select(:size_s, 0..99) %> </td>
</tr>
</table>

  <%= submit_tag("Create Item") %>  
<% end %>

在我看来,我只想用

渲染部分
<%= render "shirt" %>

但是当页面加载时,它不会加载表单。除了布局中的链接外,正文是空的。我在网上查了一下,找不到这个有什么问题,有什么想法吗?

2 个答案:

答案 0 :(得分:1)

以这种方式呈现表单不一定是“常规”,但如果您的应用程序需要此功能,那么我不会让rails让您拥有某种功能。在我看来,你当然应该尽可能地遵循rails惯例,但不应该让这成为一个限制因素。

就未呈现的表单而言,我认为您只需要在表单标记中添加=,因此它应该是:

<%= form_for(:shirt, :url => { :action => 'save_to_session' } ) do |f| %>

而不是

<% form_for(:shirt, :url => { :action => 'save_to_session' } ) do |f| %>

希望这有帮助!

答案 1 :(得分:0)

如果要渲染部分内容,请不要指定:partial关键字?

<%= render :partial => "shirt" %>