0

为什么输入此表格的任何内容都无法保存?

新的.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
类请求 < 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 回答