Android: Как редактировать конкретную запись из базы данных в программировании Android (с использованием Ruby на рельсах) - PullRequest
1 голос
/ 05 января 2010

Сначала у меня есть база данных, созданная с использованием Ruby на рельсах. Я только что реализовал функцию вставки (HTTPPost) в своем приложении для Android, и это работает. Но я не знаю, как извлечь конкретную запись из моей базы данных и вставить ее обратно в конкретную запись в Android (как функция редактирования в RoR)

Это мой код вставки:

private void insertComment () { DefaultHttpClient client = new DefaultHttpClient ();

    HttpPost post = new HttpPost("http://10.10.3.87:3000/comments");

    // Configure the form parameters
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    nvps.add(new BasicNameValuePair("comment[content]", t_comment.getText().toString()));
    nvps.add(new BasicNameValuePair("comment[id_account]", "1"));
    nvps.add(new BasicNameValuePair("comment[id_place]", Integer.toString(position)));

    try {
        post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    HttpResponse response = null;
    try {
        response = client.execute(post);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    HttpEntity entity = response.getEntity();
    if (entity != null) {
        try {
            entity.consumeContent();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    Toast.makeText(this, "Your post is successfully uploaded",
            Toast.LENGTH_SHORT).show();

    t_comment.setText("");
}

Я действительно пробую много способов, но это не работает, и мне нужно очень много времени, чтобы бороться с этим куском кода. На самом деле, я действительно не знаю, как указать RowID для HTTPPost.

Может кто-нибудь помочь мне, пожалуйста? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 06 января 2010

Спасибо, fd за ваш отличный ответ. : -D

Я прочитал ваши комментарии, и у меня появилась новая идея.

Я пытался имитировать запрос, отображаемый в консоли RoR.

В запросе мы должны прикрепить идентификатор вместе с данными, используя метод PUT, но я изменил мой код вставки выше только с помощью запроса URL-адреса с измененными параметрами

http://10.10.3.87:3000/comments/update/1

Это означает, что мы присоединяем "id" => "1" с помощью "action" => "update"

Этот код будет вызывать метод POST вместо метода put, но это абсолютно нормально !!

СПАСИБО ОГРОМНОЕ ЗА ВАШУ ПОМОЩЬ ^ ______________ ^

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

Я не уверен насчет Android, но с точки зрения Rails я ожидаю, что вы захотите отправить HTTP GET в ваше приложение Rails для URL вашего ресурса (например: http://10.10.3.87:3000/comments/1234 для комментария с идентификатором 1234 ), гарантируя, что для заголовков принятия вы предпочитаете XML-ответ (вам нужно определить представление XML для действия show вашего комментария, чтобы это сработало).

Это должно дать вам ответ в формате XML, который вы можете декодировать и отобразить в своем приложении для Android.

Аналогичный подход должен работать для индексации ваших комментариев, например: GET для http://10.10.3.87:3000/comments (с определенным представлением XML) даст вам индекс комментариев, чтобы вы могли выбрать один, чтобы получить правильный идентификатор для показа комментарий.

Этого может быть недостаточно, если ваши комментарии привязаны к какой-либо другой «родительской» модели (например, если они находятся в области сообщения), поскольку вам также необходимо указать родителя, которого вы хотите видеть в комментарии для .

Надеюсь, это поможет!

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