Добрый день, у меня есть этот вид формы/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"
ОК спасибо. теперь это идет, но я думаю, что мне нужно 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
def check_valid flash.now [: notice] = 'Сообщение отправлено!' reply_to do | формат | format.html # index.html.erb format.json {render json: @people} конец конец, но без ответа – ubuseral
Это правильно. Вам нужно 'button_tag'. В Rails нет кнопки 'button_to'. Вы можете захотеть обратиться к [link] (http://api.rubyonrails.org), когда вы не уверены. Я предполагаю, что вы хотите проверить, проходят ли параметры? Для этого вы можете проверить журнал разработки или «<% = params debug%>» в представлении, куда будет перенаправляться ваш контроллер. Вы можете добавить 'redirect_to root_path' в действие' people # check_valid'. Добавьте строку 'params debug', о которой я упоминал ранее, к представлению, в котором маршрутизируется root. – Gjaldon