1

私はそのようなform_forを持っています:

<%= form_for(@post) do |f| %>

モデルの属性ではないパラメータを送信したい

<%= f.text_field :label%>

Labelモデル(labels has_many:postsおよびposts has_many:labels)があり、posts_controllerのcreateアクションで、labeltext_fieldに基づいて新しいLabelオブジェクトを作成します。上記のtext_fieldを使用すると、次のようになります。

undefined method `label'for #<Object>

どうすればこれを達成できますか?

前もって感謝します!

4

2 に答える 2

8

属性がデータベーステーブルに存在せず、それでも使用したい場合は、次の方法でその属性をモデルに指定する必要があります

attr_accessor :name, :email, :content
于 2012-07-20T07:40:09.553 に答える
0

関連するオブジェクトを作成するために fields_for メソッドを試すことができます。

<%= form_for(@post) do |f| %>
  <%= fields_for @post.labels do |label| %>
    <%= label.text_field :name %>
    <%= label.text_area :description %>
  <% end %>
<% end %>

デフォルトのラベル数を表示するには、関連するオブジェクトをコントローラーで構築する必要があります。

投稿コントローラーに追加します

def new
  @post = Post.new
  #To build 2 labels use
  2.times do
  @post.labels.build 
  end
end

ネストされた属性を受け入れるには、Post モデルに以下のコードを追加します。

class Post < ActiveRecord::Base
  accepts_nested_attributes_for :labels
end

誰かが投稿して削除しました...

于 2012-07-20T07:54:11.017 に答える