有人可以解釋下面的更新表單的奇怪行爲嗎?Rails更新表單問題?
模型post.rb包含以下定義
class Post < ActiveRecord::Base attr_accessible :id, :name, :content validates :id, :presence => true, :numericality => { :greater_than_or_equal_to => 100}, :uniqueness => true end
控制器posts_controller.rb定義了更新方法這樣
class PostsController < ApplicationController def update @post = Post.find(params[:id]) respond_to do |format| if @post.update_attributes(params[:post]) format.html { redirect_to @post, notice: 'Post was successfully updated.' } format.json { head :no_content } else format.html { render action: "edit" } format.json { render json: @post.errors, status: :unprocessable_entity } end end end
局部視圖_form.rb還含有用腳手架產生的標準表達式
<%= form_for(@post) do |f| %> ... <div class="field"> <%= f.label :id %><br /> <%= f.number_field :id %> </div> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name %> </div> <div class="field"> <%= f.label :content %><br /> <%= f.text_area :content %> </div> <div class="actions"> <%= f.submit %> </div> <% end %>
問題描述:
-
中的更新形式無效值
- :ID被給予像42
- 驗證輔助處理無效的輸入值(< 100),並把一個通知「Id必須大於或等於100」並且數據是而不是已更新
- 該字段用於:id被替換爲一些正確像123和更新後的按鍵值再次提交
,而不是形式的接收和更新數據庫,Rails的拋出異常 的ActiveRecord :: RecordNotFound在PostsController#顯示
找不到郵政使用id = 42
這是怎麼回事嗎?爲什麼這個表述以及爲什麼舊的價值再次被傳遞?
id字段名稱是由事故選擇的,它旨在包含客戶端提供的一些通用數值。現在我看到問題是與標識符衝突。仍在學習。感謝您的解釋。 –