0
我有一個Idea
模型,它有一個Chat
,當然,這個聊天有消息。 根據以下路線,我想在聊天頁面中創建一個表單來發布消息。在哪裏以及如何爲rails中的嵌套資源設置表單?
# Chat belongs_to :idea, and Chat has_many :chat_messages
# I wan't to post messages to /idea/:id/chat/chat_messages
resources :ideas do
resource :chat, only: :show do
resources :chat_messages, only: :create
end
end
現在,我的形式是在app/views/chats/show.html.erb
,看起來像:
# @chat and @chat_message are defined in Chat controller but I put them here so you can see them
@chat = Chat.where(idea_id: params[:idea_id]).first
@chat_message = ChatMessage.new(chat: @chat)
<%= form_for [@chat.idea, @chat, @chat_message] do |f| %>
<%= f.text_area :body, size: "60x12" %>
<%= f.submit "Message" %>
<% end %>
形式生成下面的HTML(我已刪除的投入和一些內容,這是不相關):
<form action="/ideas/1/chat/chat_messages.1" accept-charset="UTF-8" method="post">
</form>
爲什麼會有.1
在我的表單動作?(它會導致錯誤)。它應該如何?我需要它來訪問/ideas/1/chat/chat_messages
試試這個'的form_for [:理念,@chat,@chat_message]' –
完美的感謝,它的工作原理! :) 但爲什麼 ?除此之外,路線看起來不錯並且安穩嗎?我是嵌套資源的初學者 –
很高興幫助!路線看起來對我來說還好。它完全取決於要求。但是從rails文檔看,「資源不應該嵌套超過1級」。如果您使用的是最新的Rails版本,我們在嵌套資源上有更好的選擇。我相信你很擅長閱讀文檔:) –