2013-02-10 3 views
0

Добрый день, у меня есть этот вид формы/startseites/index.html.erb, и я указал метод в моем контроллере people_controller, она не идет. Я подготовил код призрака для понимания. Я хочу передать записи из выпадающих списков с тегом button_to в контрольный элемент actionValid. Там я хочу проверить записи в базе данных. Я должен читать и писать и за столом. Надеюсь, это достаточно ясно.Rails: DropDown Selection to Controller Action

class PeopleController < ApplicationController 


    def checkValid 
     @trainerName = params[:trainer_name] 
     @sportlerName = params[:sportler_name] 
     @trainerPID = params[:trainer_pid] 
     @sportlerPID = params[:sportler_pid] 

     #checks if sportlerID is null 
     @person = Person.find(params[:sportler_pid]) 
     id = Person.sportler_id 
     if id = nil then 
      Person.sportler_id = params[:trainerPID] 
     else 
      puts "Sportler can have only one Trainer!" 
     end 

    end 
    ... 

вид/startseites/index.html.erb: этот код оленья кожа идти

это должно отправить выпадающий отбора на действие контроллера checkValid(). как я могу использовать параметры?

<%=button_to("Zuordnung erstellen", :action => "checkValid", :controller =>"people" %>** 

<table> 
    <tr> 
    <td colspan="3"> 
     Jeder Sportler kann ein Trainer haben. </br> 
    </td> 
    </tr> 
    <tr> 
     <td>Trainer</td> 
     <td> 
      <%= collection_select(:trainer, :trainer_id, Trainer.all, :id, :name) %> 

     </td> 

     <td> 
     <%= link_to 'Neuer Trainer', new_person_path(:type => "Trainer") %> 
     </td> 

    <tr> 
    <tr> 
     <td>Sportler</td> 
     <td> 
      <%= collection_select(:sportler, :sportler_id, Sportler.all, :id, :name) %> 

     </td> 
     <td> 
     <%= link_to 'Neuer Sportler', new_person_path(:type => "Sportler") %> 
     </td> 
    <tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td> 
     **<%=button_to("Zuordnung erstellen", :action => "checkValid", :controller => "people") %>** 
      </td> 
     <tr> 


    </table> 

я добавил эту линию к моим маршрутам

match '/people/checkValid', :controller => 'people', :action => 'checkValid' 

но: Нет маршрута спичек {: контроллер => "люди/checkValid",: метод =>: checkValid}

нет, я думаю, что это идет, но

Шаблон: отсутствует

Missing template people/checkValid, application/checkValid with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "C:/Users/jord/testmood/app/views" 

ответ

1

Ошибка Missing template относится к отсутствующему виду. Вы должны иметь check_valid.html.erb файл вида в app/views/people/.

Кроме того, запустите rake routes в командной строке в любом месте каталога вашего приложения. Вы получите маршруты списка, которые генерируются вашим файлом route.rb. Вы можете проверить его там, если существует people#checkValid.

Btw, вы можете изменить checkValid на check_valid, чтобы вы соблюдали соглашение об именах для действий в Rails.

+0

ОК спасибо. теперь это идет, но я думаю, что мне нужно button_tag, а не button_to, потому что я хочу проверить некоторые значения. Там для меня не нужна отдельная форма. Я сделал это <% = button_tag "Zuordnung",: controller =>: people, : action => 'check_valid', : trainer_id => 2, : sportler_id => 2, : sportler_name => «TEST», : trainer_name => «TEST», : method =>: post%> и мое действие контроллера – ubuseral

+0

def check_valid flash.now [: notice] = 'Сообщение отправлено!' reply_to do | формат | format.html # index.html.erb format.json {render json: @people} конец конец, но без ответа – ubuseral

+0

Это правильно. Вам нужно 'button_tag'. В Rails нет кнопки 'button_to'. Вы можете захотеть обратиться к [link] (http://api.rubyonrails.org), когда вы не уверены. Я предполагаю, что вы хотите проверить, проходят ли параметры? Для этого вы можете проверить журнал разработки или «<% = params debug%>» в представлении, куда будет перенаправляться ваш контроллер. Вы можете добавить 'redirect_to root_path' в действие' people # check_valid'. Добавьте строку 'params debug', о которой я упоминал ранее, к представлению, в котором маршрутизируется root. – Gjaldon