রেলগুলিতে প্যারামিটারগুলি পুনঃনির্দেশ_তে চলে


201

আমরা কীভাবে রেলগুলিতে redirect_to এ পরামিতিগুলি পাস করব? আমি জানি আমরা এটি ব্যবহার করে আইডি পাস করতে পারি:

redirect_to :action => action_name,:id => 3

আমি যদি কিছু ফর্ম ডেটার মতো অতিরিক্ত পরামিতিগুলি পাস করতে চাই তবে এটি কীভাবে অর্জন করা যায়?

সম্পাদনা করুন:

রুবি 2 সিনট্যাক্সের জন্য আপনাকে উপরে স্নিপেটটি এখানে আপডেট করতে হবে:

redirect_to action: action_name, id: 3

3
আপনি আসলে কী অর্জন করার চেষ্টা করছেন? আপনি সেশনে তথ্য সংরক্ষণ বিবেচনা করেছেন?
মাইকেল সেপকোট

1
আপনি যা যা জিজ্ঞাসা করছেন তা সম্ভব নয় - আপনি যদি পুনর্নির্দেশ করছেন তবে আপনার অবশ্যই পুনর্নির্দেশের অনুরোধ করা অবশ্যই একটি GET অনুরোধ হবে, সুতরাং প্যারামগুলি সর্বদা আপনার ব্যবহারকারীদের কাছে দৃশ্যমান থাকবে। পরিবর্তে আপনার অধিবেশন স্টাফ করা উচিত।
গ্রেগটি

উত্তর:


174

কেবলমাত্র তাদের বিকল্পগুলিতে যুক্ত করুন:

redirect_to controller: 'thing', action: 'edit', id: 3, something: 'else'

ফলন হবে /thing/3/edit?something=else


22
আপনি কোনও পোস্ট দিয়ে পুনর্নির্দেশ করতে পারবেন না। 3xx সংজ্ঞা অনুসারে HTTP 1.1 ডক্স থেকে: "ব্যবহারকারীর এজেন্ট দ্বারা ব্যবহারকারীর সাথে মিথস্ক্রিয়া ছাড়াই প্রয়োজনীয় ক্রিয়াটি করা হতে পারে এবং যদি কেবল দ্বিতীয় অনুরোধে ব্যবহৃত পদ্ধতিটি জিইটি বা হেড হয়।" আপনি সত্যিই কী অর্জন করার চেষ্টা করছেন তার প্রসারিত করুন এবং আমরা সম্ভবত আপনাকে সঠিক দিকে ঠেলে দিতে পারি।
jdl

হাই আপনার প্রতিক্রিয়া জন্য অনেক ধন্যবাদ। আমি ওয়েব বিকাশের একটি নবাগত। আমি কোনও পদক্ষেপ গ্রহণের বিভিন্ন উপায় জানার চেষ্টা করছি our আপনার প্রতিক্রিয়া আমার প্রচুর সন্দেহকে পরিষ্কার করেছে। আবার ধন্যবাদ :))
মার্কিভ

থাম্বস আপ। আমি 1 ঘন্টা থেকে এটি খুঁজছি।

86

আপনি যদি রেস্টলফুল রিসোর্স ব্যবহার করেন তবে আপনি নিম্নলিখিতটি করতে পারেন:

redirect_to action_name_resource_path(resource_object, param_1: 'value_1', param_2: 'value_2')

or
#You can also use the object_id instead of the object
redirect_to action_name_resource_path(resource_object_id, param_1: 'value_1', param_2: 'value_2')

or
#if its a collection action like index, you can omit the id as follows
redirect_to action_name_resource_path(param_1: 'value_1', param_2: 'value_2')

#An example with nested resource is as follows:
redirect_to edit_user_project_path(@user, @project, param_1: 'value_1', param_2: 'value_2')

46

যদি আপনার কাছে বাড়ির # ক্রিয়াকলাপের জন্য উদাহরণস্বরূপ কিছু ফর্ম ডেটা থাকে তবে এখন আপনি সেগুলি প্যারামিটারগুলি বজায় রেখে ঘরে ঘরে পুনর্নির্দেশ করতে চান, আপনি এটি করতে পারেন

redirect_to act_house_path(request.parameters)


1
আপনি কীভাবে জানেন যে কীভাবে আপনি এটিটি যুক্ত করবেন, আরও নতুন পরামিতিগুলি? অর্থাত্ অনুরোধ.পরিমিতি, (বা +): এটি =>: যে
ক্রিস এডওয়ার্ডস

5
আপনি মার্জ পদ্ধতিটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ:redirect_to act_house_path(request.parameters.merge(key: "value"))
গ্রেগটি

3
মার্জ হওয়ার পরে অযাচিত প্যারামগুলি বাদ দিতে আপনি ব্যতীত পদ্ধতিটিও ব্যবহার করতে পারেন:redirect_to act_house_path(request.parameters.except(:authenticity_token, :controller, :action, :utf8, :commit)
মিঃ আইও

39

আপনি ফ্ল্যাশ প্যারামিটার দিয়ে স্বেচ্ছাসেবী বস্তুগুলি টেমপ্লেটে যেতে পারেন।

 redirect_to :back, flash: {new_solution_errors: solution.errors}

এবং তারপরে হ্যাশের মাধ্যমে সেগুলি টেমপ্লেটে অ্যাক্সেস করুন।

<% flash[:new_solution_errors].each do |err| %>

63
এটি খারাপ অনুশীলন। এই পদ্ধতিটি ফ্ল্যাশ অবজেক্টের অপব্যবহার করে, এটি ব্যবহারকারী বার্তাপ্রেরণের উদ্দেশ্যে। অধিবেশনটিতে স্বেচ্ছাচারিত প্যারামিটারগুলি সংরক্ষণ করা ভাল এবং তারপরে আপনি যখন সম্পন্ন করবেন তখন সেশন থেকে এই পরামিতিগুলি সাফ করুন।
গ্রেগটি


7
redirect_to :controller => "controller_name", :action => "action_name", :id => x.id

6
আপনি দয়া করে আরও কিছু ব্যাখ্যা প্রদান করতে পারেন। একটি কোড উদাহরণ সত্যই যথেষ্ট নয়।
সাইমনম্যানকে

7

আপনি যদি অতিরিক্ত ইউআরএল প্যারামিটারগুলি (নিয়ন্ত্রণকারী, অ্যাকশন, আইডি, ইত্যাদি নয়) পাস করার উপায় খুঁজছেন তবে তা করার জন্য এখানে একটি শক্ত পদ্ধতি রয়েছে:

object_path(@object, params: request.query_parameters)

এটি utm প্যারামিটারগুলি বা অন্য কোনও অতিরিক্ত প্যারামগুলি যেগুলি আপনি হারাতে চান না তা দিয়ে চলে যাবে।


4

routes.rb

 match 'controller_name/action_name' => 'controller_name#action_name', via: [:get, :post], :as => :abc

প্যারামিটারগুলির সাথে আপনি যে কোনও নিয়ামককে পুনঃনির্দেশ করতে চান তা নীচে দেওয়া হয়েছে:

redirect_to abc_path(@abc, id: @id), :notice => "message fine" 

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.