Как добавить динамически сгенерированные поля в формах в рельсы базы данных - PullRequest
0 голосов
/ 05 января 2012

** Привет всем, я пытаюсь создать одну адресную книгу, куда пользователь может вставить свои данные.

  1. Пользователь может вставить свою информацию из формы, я предоставляю динамические поля, если он хочет добавить более 1 информации, например, число может быть типа home и personal. Мой запрос заключается в том, как связать эти динамические значения с формой рельсов и отправить данные в базу данных. **

Моя модель выглядит так, как будто у пользователя могут быть данные, которые имеют имя типа информации и данные информации Например, пользователь может вставить инфо-тип = номер infoname = домашний телефон infodata = 23623623 пользователь может вставить столько цифр, сколько ему нужно, другого типа. Я делаю это так

 <%= form_for @client_info, :validate => true do |f|%>
<% if @client_info.errors.any? %>
<div id="error_explanation", class="alert-message Warning">
    <h2><%= pluralize(@client.errors.count, "error") %> Occured</h2>
    <ul>
        <% @client.errors.full_messages.each do |msg| %>
        <li>
            <%= msg %>
        </li>
        <% end %>
    </ul>
</div>
<% end %>
<select id = "opts" >
    <option value = "0">Select Option</option>
    <option value = "1">Phone Number</option>
    <option value = "2">Address</option>
    <option value = "3">Date</option>
    <option value = "4">Email</option>
    <option value = "5">Link</option>
</select>
<form>
    <div id="ap"></div>
</form>
<script type="text/javascript">
    $(document).ready(function() {

        $("#opts").change(function() {
            if($("#opts").val() == ("1")) {
                $("#ap").append('<div id="phn"><select id ="phn"><option>Personal</option><option >Home</option><option >Custom</option></select> <input type ="text" id="ad"></input>' + '<a href="#" class="remove1" id="rm" >Remove</a></div>');
            }
            if($("#opts").val() == ("2")) {
                $("#ap").append('<div id= "add"><select id ="add"><option>Home Address</option><option >Work Address</option><option >Custom</option></select> <textarea rows="2" cols="20"></textarea>' + '<a href="#" class="remove2" id="rm" >Remove</a></div>');
            }
            if($("#opts").val() == ("3")) {
                $("#ap").append('<div id ="date"><select id ="date"><option>Birthday</option><option >Anniversary</option><option >Custom</option></select> <input type ="text" id="datepic" ></input>' + '<a href="#" class="remove3"  id="rm" >Remove</a></div>');
            }
            if($("#opts").val() == ("4")) {
                $("#ap").append('<div id ="email"><select id ="email"><option>Home Email</option><option >Work Email</option><option >Custom Email</option></select> <input type ="text"></input>' + '<a href="#" class="remove4" id="rm" >Remove</a></div>');
            }
            if($("#opts").val() == ("5")) {
                $("#ap").append('<div id="link"><select id ="link"><option>Profle</option><option >Blog</option><option>Homepage</option><option>Custom</option></select> <input type ="text"></input>' + '<a href="#" class="remove5" id="rm" >Remove</a></div>');
            }

        });
        $('.remove1').live('click', function() {
            $("#phn").remove();
            return false;
        });

    });

</script>
<div class="actions">
    <%= f.submit :class => "btn primary" %> <a href="<%= clients_path %>" class="btn">Cancel</a>
</div>
<% end %> 

Теперь я хочу добавить сгенерированные html поля в мою форму рельсов?

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Все входные данные будут передаваться как параметры, вы можете проходить через них и прагматично сохранять их в вашем контроллере при действии создания.

0 голосов
/ 05 января 2012

Я бы поместил числа в отдельную модель с отношением один ко многим между ними, что-то вроде этого:

class User
  has_many :user_infos
end

class UserInfo
  belongs_to :user

  # attributes:
  # user_id (what user this info belongs to)
  # type (could be Number, Email, whatever)
  # name (an identifier like "home phone", "work email" etc)
  # data (the actual value)
end

Затем вы можете просто добавить контроллер для модели UserInfoгде вы можете добавить информацию для пользователя.

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