0

我有以下

  • 页面模型
  • 客户模型
  • 商业模式

这些模型之间没有任何关系。

我想在页面的显示模板上有 Form_for 的

  • 一份给客户
  • 一个为企业

这可能吗?

目前有以下:

<div id="sidebar">
    <%= form_for (@business) do |f| %>
     <div id="contact_form_name">
     <p>Company</p>
     <%= f.text_field :company_name, :class =>'form_input_small'  %>
     <%= f.submit 'Submit', :class => 'button' %>
    <% end %>
</div>

<div id="sidebar">
    <%= form_for (@client) do |f| %>
     <div id="contact_form_name">
     <p>First Name</p>
     <%= f.text_field :first_name, :class =>'form_input_small'  %>
     <%= f.submit 'Submit', :class => 'button' %>
    <% end %>
</div>

我在日志中出现的错误如下

 <div id="sidebar">
    78:                                 <%= form_for (@business) do |f| %>
    79:                                         <div id="contact_form_name">
    80:                                         <p>Company</p>
    81:                                         <%= f.text_field :company_name, :class =>'form_input_small'  %>
  app/views/pages/show.html.erb:78:in `_app_views_pages_show_html_erb___1556847543_65073939124600'
  app/controllers/pages_controller.rb:9:in `show'

路线

 businesses GET    /businesses(.:format)                      {:action=>"index", :controller=>"businesses"}
                           POST   /businesses(.:format)                      {:action=>"create", :controller=>"businesses"}
              new_business GET    /businesses/new(.:format)                  {:action=>"new", :controller=>"businesses"}
             edit_business GET    /businesses/:id/edit(.:format)             {:action=>"edit", :controller=>"businesses"}
                  business GET    /businesses/:id(.:format)                  {:action=>"show", :controller=>"businesses"}
                           PUT    /businesses/:id(.:format)                  {:action=>"update", :controller=>"businesses"}
                           DELETE /businesses/:id(.:format)                  {:action=>"destroy", :controller=>"businesses"}
4

1 回答 1

1

只要您向其提供必要的信息,Rails 并不真正关心您的表单在哪里,并且没有什么说您不能将各种模型混合到一个视图中。

假设您正在使用 RESTful 资源(如您所愿),您将拥有如下内容:

resources :pages
resources :companies
resources :clients

在您的 routes.rb 中进行设置,这样可以很容易地指定您希望 form_fors 的操作方式。

例如,在您的 Page 模型的 show 操作中,您可以有如下内容:

<h1>New Company:</h1>
<%= form_for @company, :url => companies_path do |f| %>
...
<% end %> 

<h1>New Client:</h1>
<%= form_for @client, :url => clients_path do |f| %>
...
<% end %>

确保您正在设置实例变量@company,并@client在您的页面控制器中显示类似@company = Company.new&的操作@client = Client.new

在这两种情况下,您的表单都会发布到各自模型的创建操作中。您可以依靠记录识别进行检查以进一步阅读。

于 2012-11-19T18:20:28.190 回答