ruby on rails - Param is missing or the value is empty: ParameterMissing in ResultsController#update -


i have result belongs website. after create website create result , redirect edit page. here want add more values.

my problem is: when try update result, get:

param missing or value empty: result       request      parameters:      {"utf8"=>"✓",  "_method"=>"patch",  "authenticity_token"=>"grn/y/04qbsm9dzluabuyf8zsv2emhnrzgbzy/6gmdlobdq8v5uncij9vrp51uydc6m/qc61jpwwpuehsuc5xa==", "data"=>["//html/body/div[position() = 3]/ul/li[position() = 16]/ul/li[position() = 2]/child::text()",  "//html/body/div[position()     = 3]/ul/li[position() = 16]/ul/li[position() = 2]/p/a/child::text()",  "//html/body/div[position() = 3]/ul/li[position() = 16]/ul/li[position() = 4]/child::text()",  "//html/body/div[position()     = 3]/ul/li[position() = 16]/ul/li[position() = 5]/a/child::text()"],  "commit"=>"update result",  "id"=>"66"} 

this how result params looks like

def result_params       params.require(:result).permit(:data)     end 

my model:

class result < activerecord::base   belongs_to :website   attr_accessor :website_id   attr_accessor :data    serialize :data, array end 

here controller code:

    class resultscontroller < applicationcontroller   before_action :set_result, only: [:show, :edit, :update, :destroy]    # /results   # /results.json   def index     @results = result.all   end    # /results/1   # /results/1.json   def show   end    # /results/new   def new     @result = result.new   end    # /results/1/edit   def edit     @result = result.find(params[:id])   end    # post /results   # post /results.json   def create     @result = result.new(result_params)      respond_to |format|       if @result.save         format.html { redirect_to @result, notice: 'result created.' }         format.json { render :show, status: :created, location: result }       else         format.html { render :new }         format.json { render json: @result.errors, status: :unprocessable_entity }       end     end   end    # patch/put /results/1   # patch/put /results/1.json   def update     respond_to |format|       if @result.update(result_params )         format.html { redirect_to @result, notice: 'result updated.' }         format.json { render :show, status: :ok, location: @result }       else         format.html { render :edit }         format.json { render json: @result.errors, status: :unprocessable_entity }       end     end   end    # delete /results/1   # delete /results/1.json   def destroy     @result.destroy     respond_to |format|       format.html { redirect_to results_url, notice: 'result destroyed.' }       format.json { head :no_content }     end   end     private     # use callbacks share common setup or constraints between actions.     def set_result       @result = result.find(params[:id])     end      # never trust parameters scary internet, allow white list through.     def result_params       params.permit(:data => [])     end end 

my view:

<%= form_for(@result) |f| %>   <% if @result.errors.any? %>     <div id="error_explanation">       <h2><%= pluralize(@result.errors.count, "error") %> prohibited result being saved:</h2>        <ul>       <% @result.errors.full_messages.each |message| %>         <li><%= message %></li>       <% end %>       </ul>     </div>   <% end %>       <div class="field">       <% if @result.website.url != nil %>       <%= atts = get_all_elements(@result.website.url)%>           <% atts.each |p| %>               <div>                 <%= check_box_tag "data[]", get_xpath_from_node(p)%>                 <%= p.text %>               </div>           <%end%>       <% end%>     </div>    <div class="actions">     <%= f.submit %>   </div> <% end %> 

and place call edit result page:

def update     respond_to |format|       if @website.update(website_params)         format.html { redirect_to @website, notice: 'website updated.' }         format.json { render :show, status: :ok, location: @website }       else         format.html { render :edit }         format.json { render json: @website.errors, status: :unprocessable_entity }       end     end   end 

ive allready tryed every solution find, none of them seemed work me.

the problem lies here:

params.require(:result).permit(:data) 

from require documentation,

require ensures parameter present. if it's present, returns parameter @ given key, otherwise raises actioncontroller::parametermissing error.

you requiring result parameter it's missing params. values inside data param. removing require should trick.

params.permit(:data) 

if want keep require, wrap data inside result in forms.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -