0

このフォームに入力されたものが保存されないのはなぜですか?

new.html.erb

<%= form_for [@requestable, @request] do |f| %>
   <%= f.label :status %>
   <%= f.text_field :status, rows: 8 %>
   <%= f.submit "Request", :class => 'btn'%>
<% end %>

requests_controller.rb

class RequestsController < ApplicationController
   before_filter :load_requestable

   def index
     @requests = @requestable.requests
   end

   def new
     @request = @requestable.requests.new
   end

   def create
     @request = @requestable.requests.new(params[:status])
     if @request.save
        redirect_to [@requestable, :requests], notice: "Request sent."
     else
      render :new
   end
 end

private

  def load_requestable
    klass = [Company, Profile].detect { |c| params["#{c.name.underscore}_id"]}
    @requestable = klass.find(params["#{klass.name.underscore}_id"])
  end

end

私のコントローラーはこのhttps://github.com/railscasts/154-polymorphic-association-revised/blob/master/blog-after/app/controllers/comments_controller.rbに基づいています

request.rb
クラスRequest<ActiveRecord:: Base

  attr_accessible :status

  belongs_to :requestable , polymorphic: true
  belongs_to :profile

  validates :status,  presence: true

end

これは私のデバッガーによって生成されています

--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: /0H2k89HN4JVXBPsoFWen5rUfx2xr4p5hr1uDSQVlcA=
request: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  status: pending
commit: Request
action: create
controller: requests
company_id: '1'
4

1 に答える 1

1

params ハッシュの内容を確認してください。ステータス フィールドは、おそらく のようなものparams[:request][:status]です。標準の activerecord-y のものを想定すると、リクエスト オブジェクト全体のハッシュを .new に渡します。

于 2012-06-30T06:12:07.533 に答える