开发者

New record not being saved with any values

开发者 https://www.devze.com 2023-03-18 21:58 出处:网络
I started the question differently, about a collection_select, but I found out that is not the problem.

I started the question differently, about a collection_select, but I found out that is not the problem. This particular model won't save any data at all. It just ignores the values in the parameters. I can only save new records with NULL values (except for the timestamp fields).

See my comment for my latest try to fix it.

I have generated a fe开发者_运维问答w models with the handy scaffold command. Now I have tried to change a textbox to a collection_select for linking the new entity to the correct related one.

Using rails 3.1RC4 (hopefully this is not a bug).

In the _form.html.erb I use the following code:

    <div class="field">
    <%= f.label :category_id %><br />
    <%= f.collection_select(:category_id, Admin::Category.all, :id, :name) %>
  </div>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  ...all other items...
  <div class="actions">
    <%= f.submit %>
  </div>

After I click the submit button I receive error messages. It says that the name and permalink do not comply to the validation. I don't understand however, because in the logfiles I find this:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"my token is here", "admin_branche"=>{"category_id"=>"3", "name"=>"Verzekeraars", "permalink"=>"verzekeraars", "visible"=>"1"}, "commit"=>"Create Branche"}

To me it seems that the params contain all the needed values.

For the sake of completeness I will post my create method and model below.

So far I have tried switching back and forth between collection_select and f.coll... with no success. The current setup seems most appropriate to me, based on the logs. I have also googled a lot, but haven't been able to find the answer. Question 2280106 on this site looks the same, but it had to do with attr_accessible which I have commented out in the model (I restarted the server afterwards and retried, just to be sure).

Help is much appreciated!

branche.rb:

class Admin::Branche < ActiveRecord::Base

 # attr_accessible :name, :permalink

  #relationships
    has_many :courses, :as => :parent
    belongs_to :category

  #validations
    validates :name, :presence => true, :length => {:maximum => 255}
    validates :permalink, :presence => true, :length => { :within => 4..25 }

end

create action in the controller:

  def create
    @admin_branch = Admin::Branche.new(params[:admin_branch])

    respond_to do |format|
      if @admin_branch.save
        format.html { redirect_to @admin_branch, notice: 'Branche was successfully created.' }
        format.json { render json: @admin_branch, status: :created, location: @admin_branch }
      else
        format.html { render action: "new" }
        format.json { render json: @admin_branch.errors, status: :unprocessable_entity }
      end
    end
  end


In the controller, you're doing this:

@admin_branch = Admin::Branche.new(params[:admin_branch])

You should do this:

@admin_branch = Admin::Branche.new(params[:admin_branche])

If you look at the request parameters, the attributes are under "admin_branche", not "admin_branch".

I think that should solve your problems, if not, please let us know.


If you have problems with the generated inflections, you can completely customize them in the config/initializers/inflections.rb

just add something like this:

ActiveSupport::Inflector.inflections do |inflect|
         inflect.irregular 'branch', 'branches'
     end
0

精彩评论

暂无评论...
验证码 换一张
取 消