アセットパイプラインをサポートしていないアプリケーションであるRedmineのRailsにプラグインを書いています。私が繭の宝石を使用する方法はありますか?アセットパイプラインを使用しないでください。私のRailsのバージョンは、次のことを行う3.2.21Rails:アセットパイプラインなしのコクーン宝石を使用
です、再び、私は資産のパイプラインを使用することはできませんので
//= require cocoon
は、動作しません。
代替手段はありますか?
アセットパイプラインをサポートしていないアプリケーションであるRedmineのRailsにプラグインを書いています。私が繭の宝石を使用する方法はありますか?アセットパイプラインを使用しないでください。私のRailsのバージョンは、次のことを行う3.2.21Rails:アセットパイプラインなしのコクーン宝石を使用
です、再び、私は資産のパイプラインを使用することはできませんので
//= require cocoon
は、動作しません。
代替手段はありますか?
繭の宝石なしでネストされたフォームを作成できます。
お客様と製品にネストフォームを含める請求書フォームがあるとします。これは可能です。請求書のモデルでは
<%= form_for @invoice do |f| %>
<%= f.text_field :invoice_number %>
<%= f.fields_for :customer do |c| %> // start nested form
<%= c.label 'customer name' %>
<%= c.text_field :customer_name %>
<% end %>
<%= f.fields_for :products do |p| %> // start nested form
<%= p.label 'product name' %>
<%= p.label :product_name %>
<% end %>
<%= f.submit 'save invoice', invoices_path, class: 'btn btn-primary' %>
<% end %>
は行います
has_one :customer
has_many :products
accepts_nested_attributes_for :customer, reject_if: :all_blank, allow_destroy: true
accepts_nested_attributes_for :products, reject_if: :all_blank, allow_destroy: true
カスタマー・モデル
belongs_to :invoice
製品モデルを
お使いのコントローラでbelongs_to :invoice
:
def invoice_params
params.require(:invoice).permit(:number customer_attributes: [:id, :customer_name :_destroy], products_attributes: [:id, :product_name])
end
私が説明として、請求書を使用していますが、あなたが持っているものは何でもモデル/関係でそれを変更することができます。しかし、同じ複数化の言葉に従うことを忘れないでください。あなたのモデルの代わりに、has_one :customer
にhas_many :customers
を持っている場合たとえば、accepts_nested_attributes_for :customers
にして、コントローラの変更にcustomer_attributes: [:id, :customer_name :_destroy]
customers_attributes: [:id, :customer_name :_destroy]
し、最後のネストされた属性を受け入れますが、少なくともあなたにあるものにも、あなたのf.fields_forを変更するには覚えていない変更してくださいこの例の場合、モデルは、それがなる:
<%= f.fields_for :customers do |c| %>
EDIT:あなたは、コントローラ内のインスタンスを作成する必要がありますいくつかのケースでは 。コントローラの新しい動作では、次のような操作を行う必要があります。
def index
@invoices = Invoice.all
end
# GET /invoices/new
def new
@invoice = Invoice.new
@invoice.products.build
@invoice.build_customer
end
お返事ありがとうございます!私が繭を望んでいた理由は、私のフォームからフィールドを動的に追加したり削除したりすることができたからです(link_to_add_associationとlink_to_remove_associationを利用しています)。私は繭なしでそれを行う簡単な方法は見ていません... – ineedahero
jQueryを使ってそれは非常に簡単で、誰かの代わりに独自のコードを調整するのが簡単であることに加えて、より多くのことを学ぶことができます。あなたが望むなら、私はあなたにjQueryでそれを行う方法を教えることができます。 – luissimo