2014-04-02 94 views
0

我正在創建一個表單,用戶可以輸入他們最喜歡的食物。我希望這份表格能夠爲現有的最喜歡的食物和新的最喜歡的食物提供服務。創建可用於創建和更新模型的表單

我想我可能只是切換什麼對象被創建爲這樣的形式:

<% 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 %> 

但是我得到一個錯誤syntax error, unexpected keyword_else, expecting keyword_end

+0

你得到這個錯誤,因爲你還沒有結束的形式..把2 <% end %>,之前一個和最後一個結束..但你是什麼意思現有的食物形式..? –

回答

1

我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 %> 
0

你最好使用嵌套的表格,這和讓UsersController採取更新的護理:

<%= form_for @user, :html => { class: :form } do |f| %> 
    <%= f.fields_for :favourite_food do |food_form| %> 
    <% # your favorite_food inputs go here %> 
    <% end %> 
<% end %> 

在你User類你必須有accepts_nested_attributes_for

class User 
    accepts_nested_attributes_for :favorite_food 
    ... 
end 

在你UserController你需要確保允許favorite_food_attribures您的大力指標的影響:

params.require(:person).permit(favorite_food_attribures: []) #do not delete the existing parameters that are already there. 

你可以檢查this answer獲取更多信息。

希望這可以幫助你。