2014-12-16 2 views
0

Я знаю, что на это много вопросов, но, посмотрев примерно дюжину или около того, ни одна из них не кажется той же проблемой. У меня есть модель «Action», которую я просто пытаюсь редактировать и обновлять. (fyi, это не вложенная форма, я не использую devise, и это не проблема activeadmin ... как практически все остальные вопросы по этой теме). Я получаюStrong Params Непропущенные параметры

ошибку:

unpermitted parameters: utf8, _method, authenticity_token when I do this. 

Действие Params в Actions_controller:

def action_params 
    params.permit(:id, :call_answered, :is_customer, :category_id, :actiontype_id, :why, :reviewer_id, :reviewed, :spam, :lead) 
end 

ЕСЛИ Я изменить его на:

params.require(:action).permit(:id, :call_answered, :is_customer, :category_id, :actiontype_id, :why, :reviewer_id, :reviewed, :spam, :lead) 
end 

, чем я получаю ошибку ниже (и Я не могу найти решение для этого):

undefined method `permit' for "update":String 

действия регулятор:

def edit 
    @action = Action.find(params[:id]) 
    @actiontypes = Actiontype.all 
    @categories = Category.all 
    @lead_categories = @categories.where(lead: true) 
    @user = current_user 
    @reviewer = User.find(@action.reviewer_id) if @action.reviewed? 
end 

def update 
    @action = Action.find(params[:id]) 
    if @action.update!(action_params) 
     binding.pry 
     flash[:success] = "Loop closed!" 
     redirect_to '/closingloop/actions?reviewed=false' 
    else 
     flash[:danger] = "Something Went Wrong! The loop was not closed!" 
     render :edit 
    end 
end 

def action_params 
    params.permit(:id, :call_answered, :is_customer, :category_id, :actiontype_id, :why, :reviewer_id, :reviewed, :spam, :lead) 
end 

Вид:

<%= form_for [:closingloop, @action] do |f| %> 
     <%= f.hidden_field :reviewer_id, :value => @user.id %> 
     <%= f.hidden_field :reviewed, :value => true %> 
     <table width="70%" align="center" class="table table-responsive"> 
      <tr> 
       <th>Tracking Number</th> 
       <td><%= @action.company.tracking_phone_number %></td> 
      </tr> 
      <tr> 
       <th>Target Number</th> 
       <td><%= @action.company.phonenumber %></td> 
      </tr> 
      <tr> 
       <th>Opportunity Name</th> 
       <td><%= @action.opportunity_name %></td> 
      </tr> 
      <tr> 
       <th>Opportunity Address</th> 
       <td><%= @action.customer_address %></td> 
      </tr> 
      <tr> 
       <th>Opportunity Phone</th> 
       <td><%= @action.caller_phone_number %></td> 
      </tr> 
      <tr> 
       <th>Call Recording</th> 
       <td><%= audio_tag(@action.call_recording_link, controls: true) %></td> 
      </tr> 
      <tr> 
       <th>Duration</th> 
       <td><%= @action.duration %></td> 
      </tr> 
      <tr> 
       <th>Call Status</th> 
       <td><%= @action.call_status %></td> 
      </tr> 
      <tr> 
       <th>Date & Time</th> 
       <td><%= @action.created_at.to_formatted_s(:long) %></td> 
      </tr> 
      <% if @action.reviewed? %> 
       <tr id="row_reviewed_by"> 
        <th>Reviewed By</th> 
        <td><%= @reviewer.first_name %> <%= @reviewer.last_name %></td> 
       </tr> 
      <% end %> 
      <tr><td colspan="2">&nbsp;</td></tr> 
        <tr id="q_call_answered"> 
         <th>Call Answered?</th> 
         <td> 
          <div class="radio-toolbar"> 
           <%= f.radio_button :call_answered, true, class: 'call_answered_true' %> 
           <%= f.label :call_answered, "Yes" %> 
           <%= f.radio_button :call_answered, false, class: 'call_answered_false' %> 
           <%= f.label :call_answered, "No" %> 
          </div> 
         </td> 
        </tr> 
        <tr id="why_not_answered" style="display:none;"> 
         <th>Why wasn't it answered?</th> 
         <td> 
          <%= f.select :why, options_for_select([["No Answer", "N"], ["Abandoned", "A"], ["After Business Hours", "H"]], @action.why), { include_blank: true } %> 
         </td> 
        </tr> 
        <tr id="q_opportunity" style="display:none;"> 
         <th>Was it a opportunity?</th> 
         <td> 
          <div class="radio-toolbar"> 
           <%= f.radio_button :is_customer, true, class: 'opportunity_true' %> 
           <%= f.label :is_customer, "Yes" %> 
           <%= f.radio_button :is_customer, false, class: 'opportunity_false' %> 
           <%= f.label :is_customer, "No" %> 
          </div> 
         </td> 
        </tr> 
        <tr id="opportunity_type" style="display:none;"> 
         <th>Opportunity Type</th> 
         <td> 
          <%= f.select :actiontype_id, options_from_collection_for_select(@actiontypes, 'id', 'action_type', @action.actiontype_id), { include_blank: true } %> 
         </td> 
        </tr> 
        <tr id="reason_for_call" style="display:none;"> 
         <th>Reason for Call</th> 
         <td><%= f.select :category_id, options_from_collection_for_select(@categories, 'id', 'reason', @action.category_id), { include_blank: true } %></td> 
        </tr> 


        <tr> 
         <td>&nbsp;</td> 
         <td><input type="submit" value="Save" id="save" class="btn btn-success" /></td> 
        </tr> 
        </table> 
<% end %> 
+0

Возможно, ваш формат недействительна. Покажи это. –

+0

добавлен в форму @MarekLipka –

+0

Как выглядят ваши параметры? И что произойдет, если вы измените кнопку отправки на '<% = f.submit class: 'btn btn-success'%>'? –

ответ

0

Основная проблема здесь состоит в том, что если у вас есть модель под названием «действие», ваш PARAMS по умолчанию будет называться так же, , который сталкивается с параметрами по умолчанию ActionController. Самое простое решение, я думаю, переименование вашей модели.

Смежные вопросы