2011-12-04 15 views
1

ここでRuby初心者は、ユーザーの「プロジェクト」モデルを「フォロー」できる(または「pfollow」と言ったように)htmlフォームを構築することに成功しました。 "モデル。唯一の問題は、ユーザーが1つのフォーム上で複数のプラントを「ポポロー」しようとするときに作成したコードが機能しないことです。ユーザが一度に選択ボックスから複数のプラントを選択した場合、私の "プロジェクト"モデルと私の "prelationship"コントローラは、入力として期待される単一の整数(別名、 "pfollower_id" "prelationships"コントローラによって作成アクションのために使用されているプラ​​ントから)。複数のリレーションシップを1つのフォームで構築するレール

"pfollower_id(s)"の配列を受け入れ、次に複数の植物プレオリッションを作成するようにアプリに教えるにはどうすればよいですか?ここで

は誤りです:

undefined method `id' for #<Array:0x26abe70> 
app/models/project.rb:35:in `pfollow!' 
app/controllers/prelationships_controller.rb:6:in `create' 
Request 

Parameters: 

{"utf8"=>"✓", 
    "authenticity_token"=>"NKqa1f0M2yPLQDHbRLnxl3SiwBeTus/1q1hpZjD7hgY=", 
    "prelationship"=>{"pfollower_id"=>["4", 
    "5"]}, 
    "project_id"=>"90", 
    "commit"=>"Pfollow"} 

マイ "prelationships" コントローラ:

class PrelationshipsController < ApplicationController 

    def create   
    @project = Project.find(params[:project_id])         
    @plant = Plant.find(params[:prelationship][:pfollower_id]) 
     @project.pfollow!(@plant) 
    respond_to do |format| 
    format.html { redirect_to @project } 
    format.js 
    end 
    end  
end  

そして容疑者 "pfollow!"

def pfollow!(pfollowed) 
    prelationships.create!(:pfollowed_id => pfollowed.id) 
    end   

フォームが正常に動作しますので、pfollower_idsの配列を扱うことができないだけで、このコントローラおよび方法だ:トレースが示す私のモデル内のメソッドも過失です。

私は助けに絶望しています!あらゆる方向性が非常に役立ちます。

答えて

1
は、あなたのコントローラで each方法でそれを打破

:D

params[:prelationship][:pfollower_id].each do |p| 
@project.pfollow!(Plant.find(p)) 
end 

私は一つだけのparamが同様に返された場合、これは仕事と推測しています。 は完全にです。

+0

1つのパラメータでも機能します。フリージンのすごい。ありがとう、旅行! –

関連する問題