问题
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