Невозможно получить значения из представления в контроллер - PullRequest
0 голосов
/ 26 марта 2012

Мой взгляд на новую форму

<h1>Add Form 3C </h1>
<%= form_for([@basiccase, @form3c]) do |f| %>
    <%= render 'shared/error_messages', :object => f.object %>

    <div class="field">
        <%= f.label :date_of_investigation %>
        <%= f.date_select :date_of_investigation, {:include_blank => true, :default => nil} %>
        </div>
 <div class="actions">
        <%= f.submit "Add Form" %>
     </div>

<% end %>

Мой контроллер для новых и создания

def new
    @title = "New Form 3C"
    @basiccase = Basiccase.find_by_id(params[:basiccase_id])
    @form3c = @basiccase.build_form3_c
  end

  def create
    @basiccase = Basiccase.find_by_id(params[:basiccase_id])
    @form3c = @basiccase.build_form3_c(params[:form3c])
             if @form3c.save
            flash[:success] = "Form created!"
            redirect_to current_user
          else
            flash[:warning] ="Failed to create a Form"
            render 'users/show'
          end
  end

Я не могу получить значение params [: form3c] в контроллере создания. когда я пытался проверить ставит params [: form3c], он показывает пустым. Может ли кто-нибудь помочь мне, где я не прав

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Ключ params будет основан на имени вашего класса. Rails ожидает, что имена классов будут в смешанном регистре (например, BasicCase), и создает ключ param, используя нижний регистр и разделяя слова подчеркиванием.

Вы можете проверить это в консоли Rails, используя #underscore:

1.9.2p290 :001 > "BasicCase".underscore
 => "basic_case" 

Я полагаю, вы назвали свой класс Form3C, который становится form3_c, как предложил Дилан.

Возможно, вы захотите переименовать обе ваши модели в BasicCase и Form3c, что должно дать вам параметры basic_case_id и form3c.

0 голосов
/ 26 марта 2012

Проверьте вашу консоль или файл development.log сразу после нажатия «Добавить форму».

Не уверен насчет точного, но вы найдете параметр что-то вроде:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"...", "basiccase"=>{"form3c" => {"email"=>"asdsa", "password"=>"[FILTERED]", "remember_me"=>"0"}}}

Затем используйте params [: basiccase] [: form3c]

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