我需要一种方法来在一个表单中保存2个或更多模型。 Mymodel有两个输入(s_url和i_url)。这是我设置的测试表单。
<%= form_for :mymodel, :url => mymodels_path do |f| %>
<p>
<%= f.text_field :s_url %><br />
<%= f.text_field :i_url %>
</p>
<p>
<%= f.text_field :s_url %><br />
<%= f.text_field :i_url %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
这是控制器:
def new
@mymodel = Mymodel.new
end
def create
@mymodel = Mymodel.new(s_url: params[:s_url], i_url: params[:i_url])
if @mymodel.save
redirect_to some_index_path(@some_index, :anchor => params[:s_url])
end
end
当我保存时,它只提交其中一个模型而不是两者。此外,我不知道用户将保存多少型号。我只是将2硬编码到表单中以测试它们是否都会发送。但最终,形式将是动态的。
答案 0 :(得分:0)
def new
@mymodel = Mymodel.new
end
def create
@mymodel = Mymodel.new(s_url: params[:s_url], i_url: params[:i_url])
if @mymodel.save
redirect_to some_index_path(@some_index, :anchor => params[:s_url])
end
end
在您的控制器代码的两个操作中,我看到您只有模型(Mymodel
)并且您正在创建该模型的实例并保存它(@mymodel.save
)。那么,你怎么能期望它提交给两个模型呢?
如果你真的想在同一个动作中创建和保存两个模型,那么你会做这样的事情(取决于你的模型的样子):
def create
# creating two models
@mymodel_1 = Mymodel1.new(s_url: params[:s_url])
@mymodel_2 = Mymodel2.new(i_url: params[:i_url])
# saving two models
if @mymodel_1.save && @mymodel_2.save
redirect_to some_index_path(@some_index, :anchor => params[:s_url])
end
end
但是,您不能一次重定向到多个模型实例。你必须重定向到其他地方。