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"}
我的“预关系”控制器:
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数组。
我迫切需要帮助!任何和所有方向都会非常有帮助。
答案 0 :(得分:1)
使用控制器中的each
方法对其进行细分:D
params[:prelationship][:pfollower_id].each do |p|
@project.pfollow!( Plant.find(p) )
end
如果只返回一个参数,我猜这会有效。 完全不确定。