我正在編寫一個簡單的rails應用程序,我目前有兩個模型,位置用戶,它們與消息模型具有相同的關係。即,位置有很多消息,用戶有很多消息,消息屬於用戶和位置。我目前正在嘗試添加一個表單,以在我的位置顯示視圖中創建一條新消息。下面是一些代碼:一個模型在另一個視圖中的形式
app/views/locations/show.html.erb:
<h1><%= @locaton.name %></h1>
<p><%= @location.location %></p>
<p><%= @location.discription %></p>
<%= link_to "Find a Different Location", crags_path %>
<h2> Messages
<ul>
<% @location.messages.each do |message|%>
</li>
<h3><%=message.user.username%></h3>
<p><%=message.content%></p>
</li>
<% end %>
</ul>
位置控制器:
class LocationsController < ApplicationController
def index
@locations = Location.all
end
def show
@location = Location.find(params[:id])
end
def new
@Location = Location.new
end
def create
@location = Location.new(
name: params[:location][:name],
location: params[:location][:location],
discription: params[:location][:discription])
@location.save
flash.notice = "#{@location.name} Created!"
redirect_to location_path(@crag)
end
def edit
@location = Location.find(params[:id])
end
def update
@location = Location.find(params[:id])
@location.update_attributes(params[:location])
flash.notice = "#{@location.name} Updated!"
redirect_to crag_path(@location)
end
def destroy
@location = Location.find(params[:id])
@location.destroy
flash.notice = "#{@location.name} deleted."
redirect_to locations_path
end
end
MessagesController
class MessagesController < ApplicationController
def new
@message = Message.new
end
def create
@message = current_user.messages.build(
content: params[:message][:content])
redirect_to crags_path
end
end
表部分,我想在的位置,包括
/show.html.erb
<%= form_for(@message) do |f| %>
<p>
<%= f.label "Leave a Message" %>
<%= f.text_area :content %>
</p>
<%= f.submit "submit" %>
<% end %>
當我嘗試添加UDE部分我得到以下錯誤
undefined method `model_name' for NilClass:Class
,我認爲形式試圖與位置控制器進行通信,因爲它是在一個位置查看,並因爲它無法找到的位置控制器實例@message ,它不知道該怎麼做。我想弄清楚如何在消息控制器中的位置視圖中包含此窗體。如果我爲new_message_path創建一個視圖,它可以正常工作,我猜測它是因爲它在消息視圖中運行,所以它會反饋到消息控制器。
我還想知道是否有任何方法可以創建一個與current_user和表單所在位置相關的消息(或者希望在我找出最後一個問題的時候會產生一個消息對象有一個location_id屬性,我該如何使用我當前所在的頁面(使用url/locations/location_id)將消息鏈接到該位置?謝謝!
感謝您的幫助!正是我在找什麼 – user2136807 2013-04-18 05:53:43
這些都沒有經過測試,所以你可能會碰到一些快速衝動,但這應該讓你朝着正確的方向:) – 2013-04-18 05:55:50
有一件事仍然不起作用的是, location_id和user_id沒有出現在params散列中,它們都看起來像'<%f.hidden_field:user_id,:value => current_user.id%> – user2136807 2013-04-18 06:02:39