How to use post method for fetching data from client in def create function of ROR

允我心安 提交于 2019-12-23 05:14:55

问题


I am struggling with these question,how to fetch data from client side,how to use post method in def create function,to fetch the data from client side. Client side coding is android,Server side code is ROR.

server side coding in ror

def create 
 respond_to do |format|

   @post = Post.new(params[:post])
    if @post.save
      flash[:notice] = "Prayer Successfully created."
      @posts = Post.paginate(page: params[:page],:per_page => 5)

      format.json{ render :json => @post, :status => :created }
    else 
      flash[:notice] = "Error"
      @posts = Post.paginate(page: params[:page],:per_page => 5)

      format.json{ render :json => @post, :status => :created }
    end
 end 
end

  def create_a_post 
   content = JSON.parse request.body.read 
     @post = Post.new[:content] 
      @post.save 
end

Here i create an new action as create_a_post for fetching,but what i felt is we have to fetch from def create function itself,whats the code is needed to fetch data.

How to use def crate function,for getting data from client side

Here i will mention my client side code also

public class HomeLayoutActivity extends Activity implements OnClickListener{

        private EditText value;
        private Button btn;
        private ProgressBar pb;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home_layout);
            value=(EditText)findViewById(R.id.editText1);
            btn=(Button)findViewById(R.id.button1);
            pb=(ProgressBar)findViewById(R.id.progressBar1);
            pb.setVisibility(View.GONE);
            btn.setOnClickListener(this);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.home_layout, menu);
            return true;
        }

        public void onClick(View v) {
            // TODO Auto-generated method stub
                if(value.getText().toString().length()<1){

                    // out of range
                    Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show();
                }else{
                    pb.setVisibility(View.VISIBLE);
                    new MyAsyncTask().execute(value.getText().toString());      
                }


        } 

        private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

            @Override
            protected Double doInBackground(String... params) {
                // TODO Auto-generated method stub
                postData(params[0]);
                return null;
            }

            protected void onPostExecute(Double result){
                pb.setVisibility(View.GONE);
                Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
            }
            protected void onProgressUpdate(Integer... progress){
                pb.setProgress(progress[0]);
            }

            public void postData(String valueIWantToSend) {
                // Create a new HttpClient and Post Header
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://floating-wildwood-1154.herokuapp.com/posts/create_a_post");

                try {
                    // Add your data
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("content", valueIWantToSend));
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    httppost.setHeader("Content-Type", "application/json");
                    httppost.setHeader("Accept", "application/json");

                    // Execute HTTP Post Request
                    HttpResponse response = httpclient.execute(httppost);

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                } catch (IOException e) {
                    // TODO Auto-generated catch block

                }
            }
        }
    }

来源:https://stackoverflow.com/questions/16805989/how-to-use-post-method-for-fetching-data-from-client-in-def-create-function-of-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!