我有一個虛擬屬性的模型書籍,用於從書籍窗體創建編輯器。 代碼看起來像:Rails:虛擬屬性和表單值
class Book < ActiveRecord::Base
has_many :book_under_tags
has_many :tags, :through => :book_under_tags
has_one :editorial
has_many :written_by
has_many :authors, :through => :written_by
def editorial_string
self.editorial.name unless editorial.nil?
""
end
def editorial_string=(input)
self.editorial = Editorial.find_or_create_by_name(input)
end
end
而且新的形式:
<% form_for(@book,
:html => { :multipart => true }) do |f| %>
<%= f.error_messages %>
...
<p>
<%= f.label :editorial_string , "Editorial: " %><br />
<%= f.text_field :editorial_string, :size => 30 %> <span class="eg">Ej. Sudamericana</span>
</p>
...
這樣,當表單數據沒有經過我失去了在編輯領域submited的數據驗證時,表單重新,並且還創建了一個新的編輯器。我如何解決這兩個問題?我在ruby中很新,我找不到解決方案。
更新我的控制器:
def create
@book = Book.new(params[:book])
respond_to do |format|
if @book.save
flash[:notice] = 'Book was successfully created.'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created, :location => @book }
else
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity }
end
end
end
感謝您的修復。但我也有同樣的問題:我在編輯表格中丟失了插入表單中的值。在控制器中,我有: def create @book = Book.new(params [:book]) respond_to do | format |如果@ book.save flash:[:notice] ='Book was successfully created。' format.html {redirect_to的(@book)} 其他 format.html {渲染:行動=> 「新」} 結束 月底結束 可以 – Castro 2009-06-21 02:23:10
你在開發服務器日誌的外觀和粘貼PARAMS。從那裏我會嘗試用腳本/控制檯創建一本新書,並查看是否可以找到任何看起來不合適(或修復它)的東西。 – 2009-06-21 02:36:00