1
我有一個允許用戶查詢書籍的(rails 3)應用程序。我有三個型號:查詢,因此,本書用的has_many:通過關係是雙向的:
查詢通過結果 有許多書籍和 本書通過結果form_for和rails中的關聯
許多查詢當我輸入一個查詢,然後單擊OK,我獲取表單以使用查詢短語創建圖書。我想要books_controller#create使用查詢ID來創建一個結果book_id =書的ID和query_id =傳入查詢的ID。形式如下所示:
<%= form_for(@book) do |f| %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class='field'>
<%= f.hidden_field :query_id, :value => @query_id%>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
上和書本上的控制器,我有:
def create
@book = Book.new(params[:book])
query = Query.find(params[:query_id])
if(@book && query)
result = Result.new
result.book = @book
result.query = query
result.save!
...
end
end
在提交此表時,我得到錯誤:
ActiveRecord::UnknownAttributeError in BooksController#create
unknown attribute: query_id
(on line @book = Book.new(params[:book])
我的問題是:如何通過查詢ID傳遞到圖書創建操作,以便我可以在那裏構建結果記錄?
更新:找到了解決辦法:我用的URL的form_for在參數而不是表單字段通過如下:
<%= form_for(@book,:url => {:action => 'create',:query_id => @query.id}) do |f| %>
有沒有更好的方式來做到這一點?
感謝 阿南德