Сильные параметры недоступны для просмотра на контроллере в рельсах - PullRequest
1 голос
/ 28 марта 2019

Я отправляю параметры из поля зрения и получаю сильные параметры в контроллере.

Я пробую это на ruby ​​версии ruby ​​2.3.1

В поле зрения -

<%= form_tag cardamoms_create_auction_path,:enctype =>"multipart/form-data" do %> 
    <div class="field">
        <table>
            <tr>
                <td>
                    <%= label_tag :company %>
                </td>
                <td>
                    <%= select_tag :company_id,options_for_select(@companies.collect{|c|[c.name,c.id]}),prompt:"Select company",class:"form-control",required: true%>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "" %>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag :auction_number %>
                </td>
                <td>
                    <%=text_field_tag :auction_number,"",class: 'form-control',required: true,placeholder: "Ex. 19" %>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "" %>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "auction_date" %>
                </td>
                <td>
                    <%=text_field_tag :auction_date,"", "data-provide" => 'datepicker', class: "datepicker form-control",id: 'selectDate1',placeholder: "Auction date(yyyy-mm-dd)" ,required: true%>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "image_upload" %>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "start_date" %>
                </td>
                <td>
                    <%=text_field_tag :start_date,"", "data-provide" => 'datepicker', class: "datepicker form-control",id: 'selectDate2',placeholder: "Start date(yyyy-mm-dd)"%>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "" %>
                </td>
            </tr>
            <tr>
                <td>
                    <%= label_tag "end_date" %>
                </td>
                <td>
                    <%=text_field_tag :end_date,"", "data-provide" => 'datepicker', class: "datepicker form-control",id: 'selectDate3',placeholder: "End date(yyyy-mm-dd)"%>
                </td>
            </tr>
        </table>
    </div>
    <div class="actions">
        <%= submit_tag "Submit",class:"btn btn-success" ,remote: true%>
    </div>
<% end %>

В контроллере -

private

def auction_params
  params.permit(:company_id,:auction_number,:auction_date,:start_date,:end_date)
end

Я ожидаю в контроллере -

private

def auction_params
  params.require(:auction).permit(:company_id,:auction_number,:auction_date,:start_date,:end_date)
end

Как изменить вид таким образом, чтобы входящие параметры были в формате params[:auction][:company_id] вместо params[:company_id]?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы должны использовать form_for @ object для достижения этой цели. Как говорят вики-документы, form_for Создает форму, которая позволяет пользователю создавать или обновлять атрибуты конкретного объекта модели. Что-то вроде:

<%= form_for(@post, url: super_posts_path) do |f| %>
  ...
<% end %>

должен сделать трюк.

1 голос
/ 28 марта 2019

Как изменить представление таким образом, чтобы входящие параметры были в формате params [: auction] [: company_id] вместо params [: company_id]?

Как предложено 3limin4t0r, вы можете использовать form_for или form_with

Или вы можете установить его явно так:

<%= select_tag :company_id,...

становится

<%= select_tag "auction[company_id]",...

То же самое относится и к другим тегам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...