Rails строят множественные отношения в одной форме - PullRequest
1 голос
/ 04 декабря 2011

Новичок в Ruby здесь, я успешно создал html-форму, в которой пользовательские "проектные" модели могут "следовать" (или, как я сказал это "pfollow") другим "заводским" моделям. Единственная проблема заключается в том, что созданный мной код не работает, когда пользователи пытаются «отследить» несколько заводов в одной форме, что вынуждает пользователя нажать «отправить» несколько раз для большего количества заводов. Если пользователь выбирает более одного растения из поля выбора одновременно, моя модель «проекта» и мой контроллер «предварительного отношения» задыхаются на входе, который представляет собой массив, а не ожидаемое единственное целое число (иначе, «pfollower_id») от завода, который используется контроллером «prelationships» для действия создания).

Как я могу научить мое приложение принимать массив "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    

И подозреваемый "следите!" метод в моей модели, который указывает трассировка, также виновен:

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

Форма работает нормально, поэтому только этот контроллер и метод не могут обрабатывать массив pfollower_ids.

Я отчаянно нуждаюсь в помощи! Любое и все направление было бы очень полезно.

1 Ответ

1 голос
/ 04 декабря 2011

Разбейте его с помощью метода each в вашем контроллере: D

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

Полагаю, это сработает, если будет возвращен только один параметр. Не полностью уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...