铁路simple_form object_id协会



在我的应用程序中,我有很多模型:(产品belongs_to创建者,belongs_to公司创建者,公司belongs_to SEO,SEO belongs_to用户)

在我的第一个Seoscontroller中,我有:

def create
 @seo = current_user.seos.build(seo_params)
   if @seo.save
    redirect_to search_path
   else
    render :new
   end
end

(控制器工作查找!

在公司控制器中,我认为(但不是工作:[ )

def create
  seo = Seo.find(params[:seo_id])
   @compagnie = seo.compagnies.build(compagnie_params)
  if @compagnie.save
   redirect_to search_path
  else
   render :new
  end
end

在我simple_form...

<%= simple_form_for @compagnie(seo_id: seo.id) do |f| %>
<% end %>

我搜索解决方案以将我的模型 ID 关联到控制器和simple_form_for

(我的轨道错误:运行时错误在/compagnies/new关联 :seo_id未找到)

编辑

  create_table "seos", force: :cascade do |t|
   t.string   "name"
   t.string   "surname"
   t.datetime "created_at", null: false
   t.datetime "updated_at", null: false
   t.integer  "user_id"
   t.index ["user_id"], name: "index_seos_on_user_id", using: :btree
  end
  create_table "compagnies", force: :cascade do |t|
    t.string   "compagnie_name"
    t.string   "address"
    t.datetime "created_at",  null: false
    t.datetime "updated_at",  null: false
    t.integer  "seo_id"
    t.integer  "user_id"
    t.index ["seo_id"], name: "index_compagnies_on_seo_id", using: :btree
    t.index ["user_id"], name: "index_compagnies_on_user_id", using: :btree
  end

用户模型

class User < ApplicationRecord
  has_many  :seos
  has_many  :compagnies
end

搜索引擎优化模型

class Seo < ApplicationRecord
    belongs_to  :user
    has_many    :compagnies
    validates :name,        presence: true
    validates :surname,      presence: true
end

公司模型

class Compagnie < ApplicationRecord
     belongs_to :user
     belongs_to :seo

    validates :address,                 presence: true
    validates :compagnie_name,          presence: true
end

Seo 表格

            <%= simple_form_for @seo do |f| %>
        <div class="search__form--left split-panel--left">
            <div class="search__title">
                Seo:
            </div>

                <div class="search__section search__section--od">
                    <!--Name-->
                    <div class="search__field search__departure grouped-input--top">
                        <%= f.input :name, placeholder: "name", :input_html => { :class => "add__name-input ember-text-field textfield station-text-field empty station-text-field-- add__input empty" }, label: false %>
                    </div>
                    <!--Surname-->
                    <div class="search__field search__arrival grouped-input--bottom">
                        <%= f.input :surname, placeholder: "prenom", :input_html => { :class => "add__name-input ember-text-field textfield station-text-field empty station-text-field-- search__input empty" }, label: false %>
                    </div>
                </div>
                <!--Button-->
                <div class="search__button progress-button">
                    <%= f.button :submit, "Add", class: "button progress-button--button" %>
                </div> 
        </div>
    <% end %>

公司表格

    <%= simple_form_for @compagnie(seo_id: seo.id) do |f| %>
        <div class="search__form--left split-panel--left">
            <div class="search__title">
                Seo:
            </div>

                <div class="search__section search__section--od">
                    <!--Name-->
                    <div class="search__field search__departure grouped-input--top">
                        <%= f.input :address, placeholder: "address", :input_html => { :class => "add__name-input ember-text-field textfield station-text-field empty station-text-field-- add__input empty" }, label: false %>
                    </div>
                    <!--Surname-->
                    <div class="search__field search__arrival grouped-input--bottom">
                        <%= f.input :compagnie_name, placeholder: "compagnie_name", :input_html => { :class => "add__name-input ember-text-field textfield station-text-field empty station-text-field-- search__input empty" }, label: false %>
                    </div>
                </div>
                <!--Button-->
                <div class="search__button progress-button">
                    <%= f.button :submit, "Add", class: "button progress-button--button" %>
                </div> 
        </div>
    <% end %>

谢谢

我认为它应该在这一行引发语法错误

<%= simple_form_for @compagnie(seo_id: seo.id) do |f| %> 

但不知何故,它没有。如果要将seo.id传递给表单 url,则必须将其放入:url参数中。Rails FormHelper 使用polymorphic_url来生成表单操作 URL。看看它的文档,你会发现为什么你的代码不起作用。在您的情况下,如果您的路由文件如下所示:

resources :compagnies

那么表格应该是

<%= simple_form_for @compagnie, url: compagnies_path(seo_id: seo.id) do |f| %>

如果您的路线是这样的(推荐)

resources :seos do
  resources :compagnies
end

那么表格应该是

<%= simple_form_for [@seo, @compagnie] do |f| %>

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新