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
Post a Comment