2010-07-12 6 views
0

Мой задний конец - это мой сервер Rails, который отправляет данные JSON на мой интерфейс. В интерфейсе я использую javascript и jQuery, которые обрабатывают мои данные JSON и отображают некоторые из них.
Теперь пользователь может вводить число в зависимости от отображаемых на нем данных.
Таким образом, на основе ввода от пользователя, некоторые изменения вносятся в данные JSON, полученные ранее, и отправляют их обратно на мой back-end как правильно закодированный JSON.Помощь с JSON в рельсах

Мой вопрос: как я могу обработать данные JSON на сервере и сохранить входы, заполненные пользователем?

+0

Зачем вам отправлять его в JSON? Включите JSON в HTTP-запрос POST и отправьте его обратно. Rails уже знает, как это сделать, и я довольно уверен, что это не слишком сложно в jQuery. – thomasfedb

+0

Публикация JSON API может предложить более общий интерфейс, чем просто обслуживание клиентского интерфейса на основе браузера, и иногда удобно поддерживать только один тип, особенно если браузер будет сильно ориентирован на AJAX. – bjg

ответ

1

Не знаю, почему вы должны отправить данные обратно в JSON, так как Rails может просто обрабатывать данные формы обычно, как и thomasfedb говорит. Но если вам определенно нужно, вы можете использовать метод jQuery serializeArray, а затем выполнить быстрое преобразование из массива в JSON. Смотрите следующее:

http://api.jquery.com/serializeArray/#comment-47479466

Если вы идете по этому пути, вы можете использовать метод stringify в json2.js создать достоверные данные в формате JSON от объекта.

http://www.json.org/js.html


отредактирован:

К сожалению, просто понял, что вы уже получили, что далеко! Должен был правильно прочитать вопрос.

Вы можете использовать этот JSON ruby implementation для parse JSON данные:

JSON.parse(json_data, {:symbolize_names => true}) 

, а затем просто использовать метод save из ActiveRecord::Base, чтобы сохранить запись.

+0

@joecardon: - У меня есть некоторые недостающие ссылки. Я никогда не делал этого, прежде чем я отправил данные обратно на сервер в формате JSON. Я попробовал вашу команду, но получил следующую ошибку: JSON.parse ({"solutions": [{"name": "I"}, {"name": "On"}], "features": [{"name": "Composition"}]}) дает мне ошибку : SyntaxError: ошибка компиляции (IRB): 4: список нечетное число для Hash (IRB): 4: ошибка синтаксиса, неожиданный ':', ожидая '}' НО, JSON-данные достоверны. Я передал его через http://www.jsonlint.com/ json parser, и он возвращает действительный json. –

+0

Вам необходимо передать данные JSON из формы в JSON.parse как строку: JSON.parse ('{"key": "value", "another_key": 23}', {: symbolize_names => true}) – joecorcoran

1

Давайте предположим, что вы использовали JQuery.post() для отправки данных на сервер с dataType из 'JSON'

Тогда в контроллере вы можете сделать это:

MyController << ApplicationController 

    def my_action 
    @data = params[:data] // client data available as a Ruby Hash object 

    // Process data into @result (for example) 

    respond_to do |format| 
     format.json { render :json => @result.to_json } 
    end 
    end 

end 

Или вы можете оставить из render выше, и предоставить представление (называемое my_action.json.erb), в котором вы можете отформатировать ответ JSON.

+0

- Я не могу понять, что вы говорите. Мой вопрос в том, что я обрабатываю пользовательский ввод определенным образом, а затем я должен отправить эти данные на сервер, где я могу обработать его снова и действовать соответствующим образом. Формат данных, в который я отправляю данные на сервер, - JSON. Я делаю вызов jQuery.post у клиента. –

+0

@ Сильвер Ложка. Кажется, я это понял. То, что я показал, является логикой на стороне сервера для обработки входящего JSON и ответа с JSON на клиента. Было ли здесь что-то еще? – bjg

Смежные вопросы