Я работаю над своим простым персональным веб-сайтом, мне нравится рубины на рельсах, и я использую рельсы 4. У меня есть одна страница, которая называется только home.html.erb, вроде как прокручивающаяся страница. Теперь в нижней части этой страницы я хочу добавить контактную форму, где кто-то может указать свое имя, ячейку, другие данные, сообщение и отправить посылку. Большинство учебников, которые я нашел в этом разделе, в основном генерируют новую страницу и новый контроллер, я этого не хочу.
Как я могу достичь этого на той же странице, на которой я работаю?
Вы можете добавить форму снизу, используя рельсы, создающие помощники, и отправьте информацию на сервер через ajax
Легко добавить форму в нижнюю часть страницы, просто разместив HTML-код, который вы могли бы использовать на своей собственной странице, в нижней части главной страницы. Аналогичным образом вы можете поместить инструкции для того, что делать с данными в вашем основном контроллере, без каких-либо проблем.
То, что было бы труднее избежать, - это необходимость создания новой модели, поэтому у вас есть таблица для хранения этой информации - если вы не напишете ее в txt файл или не отправите ее по электронной почте.
Вот код для создания формы, не связанной с моделью:
<% form_tag(:action => 'contact_me') %<
<table>
<tr>
<td><%= label_tag(:name) %></td>
<td><%= text_field_tag(:name) %></td>
</tr>
<tr>
<td><%= label_tag(:cell) %></td>
<td><%= text_field_tag(:cell) %></td>
</tr>
<tr>
<td> </td>
<td><%= submit_tag("Send Info") %></td>
</tr>
</table>
Если вы планируете создать модель:
<% form_for(:contact_me, :url => {:action => 'create', :controller => 'main'}) do |f| %>
<table>
<tr>
<td><%= f.label(:name) %></td>
<td><%= f.text_field(:name) %></td>
</tr>
<tr>
<td><%= f.label(:cell) %></td>
<td><%= f.text_field(:cell) %></td>
</tr>
<tr>
<td> </td>
<td><%= submit_tag("Send Info") %></td>
</tr>
</table>
Последнее проще, потому что ваш контроллер может просто быть:
def create
@contact = Contact.new(contact_params)
@contact.save
redirect_to(:action => 'main')
end
private
def contact_params
params.require(:contact_me).permit(:name, :cell)
end
проверьте это railscast. Хотя это не Rails 4, он все равно должен работать.