ruby - Rails 4.2: Unknown Attribute or Server Error in Log -


i have form select_tag , options_from_collection_for_select can't seem pass. in view, when upload id set uploadzip_id 302 redirect , when it's set uploadzip_ids, unknown attribute error.

i'm bit confused have relationship set along foreign key. have model checkboxes called uploadpdf works fine.

here set up..

class campaign < activerecord::base     has_one :uploadzip end  class uploadzip < activerecord::base     belongs_to :campaign end 

db/schema.rb

  create_table "campaigns", force: :cascade |t|     t.string   "name"     t.text     "comment"     t.datetime "created_at", null: false     t.datetime "updated_at", null: false    create_table "uploadzips", force: :cascade |t|     t.string   "file_name"     t.string   "file_type"     t.datetime "date"     t.integer  "size"     t.integer  "pages"     t.string   "file_ident"     t.string   "md5"     t.datetime "created_at",  null: false     t.datetime "updated_at",  null: false     t.integer  "campaign_id"   end    add_foreign_key "uploadzips", "campaigns" 

app/controllers/campaign_controller.rb

class campaignscontroller < applicationcontroller       def index         @campaigns = campaign.all.order("created_at desc")       end        def new         @campaign = campaign.new       end        def create         @campaign = campaign.new(campaign_params)          if @campaign.save             flash[:success] = "campaign launched!"             redirect_to @campaign         else             flash[:error] = "there problem launching campaign."             redirect_to new_campaign_path         end       end      .....    private        def campaign_params         params.require(:campaign).permit(:name, :comment, :uploadzip_ids, uploadpdf_ids: [])       end end 

views/campaigns/_form.rb

<%= form_for @campaign, url: {action: "create"} |f| %>      .....some typical fields..      <%= f.label :data_file, class: "right-label" %>      <%= select_tag campaign[uploadzip_ids],                  options_from_collection_for_select(                 uploadzip.all, :id, :file_name                 ), { include_blank: "include zip file" } %>      .....some more typical fields  <% end %> 

update

i have changed code better reflect foreign key suggested. creating campaign successful it's not associating chosen uploadzip zip file selected. when calling @campaign.uploadzip, returns nil.

here updated code:

<%= select_tag "uploadzip[campaign_id]",     options_from_collection_for_select(     uploadzip.all, :id, :file_name     ), { include_blank: "include zip file" } %> 

i changed controller params.require to..

  def campaign_params     params.require(:campaign).permit(:name, :comment, :campaign_id, uploadpdf_ids: [])   end 

as per association set-up,the foreign_key should campaign_id not uploadzip_id. should either change associations or foreign_key according use-case.

and recommend follow these guides know more associations.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -