0

私は以下を持っています

  • ページモデル
  • クライアントモデル
  • 事業の型

これらのモデルのいずれにも関係はありません。

ページのショーテンプレートにForm_forを追加したいのですが

  • クライアント用に1つ
  • ビジネスのための1つ

これは可能ですか?

現在は次のとおりです。

<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は、必要な情報をフォームに提供する限り、フォームがどこにあるかを気にしません。また、さまざまなモデルを1つのビューにまとめることができないということは何もありません。

(必要に応じて)RESTfulリソースを使用していると仮定すると、次のようになります。

resources :pages
resources :companies
resources :clients

ルート.rbで設定します。これにより、form_forsの動作方法を非常に簡単に指定できます。

たとえば、ページモデルのショーアクションでは、次のようになります。

<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

どちらの場合も、フォームはそれぞれのモデルの作成アクションに投稿されます。さらに読むために、レコードIDに依存してチェックアウトできます。

于 2012-11-19T18:20:28.190 に答える