Ruby on rails 创建可用于创建和更新模型的表单

Ruby on rails 创建可用于创建和更新模型的表单,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我正在创建一个表单,用户可以在其中输入他们喜欢的食物。我希望表单既适用于现有的最喜欢的食物,也适用于新的最喜欢的食物 我想我可以像这样切换创建窗体的对象: <% if @user.favorite_food %> <%= form_for @user.favorite_food, :html => { class: :form } do |f| %> <% else %> <%= form_for :favorite_food, :url

我正在创建一个表单,用户可以在其中输入他们喜欢的食物。我希望表单既适用于现有的最喜欢的食物,也适用于新的最喜欢的食物

我想我可以像这样切换创建窗体的对象:

<% if @user.favorite_food %>
  <%= form_for @user.favorite_food, :html => { class: :form } do |f| %>
<% else %>
  <%= form_for :favorite_food, :url => :favorite_food, :html => { class: :form } do |f| %>
<% end %>

{class::form}do | f |%>
:最喜欢的食物,:html=>{class::form}do | f |%>

然而,我得到了一个错误
语法错误,意外的关键字\u else,期望关键字\u end

我同意Mayank评论您的表单应该是这样的

<% if @user.favorite_food %>

  <%= form_for @user.favorite_food, :html => { class: :form } do |f| %>
  <% end %>
<% else %>
  <%= form_for :favorite_food, :url => :favorite_food, :html => { class: :form } do |f| %>
  <% end %>

<% end %>

{class::form}do | f |%>
:最喜欢的食物,:html=>{class::form}do | f |%>

您最好为此使用嵌套表单,并让
用户控制器
负责更新:

<%= form_for @user, :html => { class: :form } do |f| %>
  <%= f.fields_for :favourite_food do |food_form| %>
    <% # your favorite_food inputs go here %>
  <% end %>
<% end %>
在您的
UserController
中,您需要确保在强参数上允许使用
最喜爱的食物属性:

params.require(:person).permit(favorite_food_attribures: []) #do not delete the existing parameters that are already there.
你可以查看更多信息


希望这能对您有所帮助。

您收到此错误,因为您尚未结束表单。。放2个,一个在前,一个在后。但你所说的现有食物是什么意思。。?
params.require(:person).permit(favorite_food_attribures: []) #do not delete the existing parameters that are already there.