form_for তবে একটি ভিন্ন ক্রিয়ায় পোস্ট করা


122

আমি একটি পেতে চাই form_for @user, তবে ব্যবহারকারীদের নিয়ামকটিতে একটি কাস্টম অ্যাকশনে পোস্ট করতে চাই।

কিভাবে আমি এটি করতে পারব?

উত্তর:


177
form_for @user, :url => url_for(:controller => 'mycontroller', :action => 'myaction')

অথবা

form_for @user, :url => whatever_path

15
আমি url_forপ্রয়োজন মনে করি না । এছাড়াও যেহেতু কন্ট্রোলার একই, আপনি ব্যবহার করতে পারেনform_for @user, :url => :action => 'myaction'
রুবিপ্রিন্স

1
উপরের উত্তরটি সহায়ক ছিল তবে আমাকে এটিকে সামান্য টুইট করতে হয়েছিল অন্যথায় POST সর্বদা সম্পাদনা নিয়ন্ত্রকের ক্রিয়াকলাপের দিকে রাইট করে চলেছিল অন্যথায়: <% = ফর্ম_ফর্ম (@ ব্যবহারকারী, ইউআরএল: {ক্রিয়া: "মাইজ্যাকশন" method, পদ্ধতি:: পোস্ট) করুন | user_form | %>। দয়া করে নোট করুন যে এটি ভিউ / ব্যবহারকারী / ফোল্ডারের মধ্যে একটি ভিউ ফাইলের জন্য।
আর্কি

42

নিম্নলিখিতটি আমার পক্ষে কাজ করে:

form_for @user, :url => {:action => "YourActionName"}


3
হুম নিশ্চিত না। আমি রেখেছি form_for @user, url: {action: 'myaction'}কিন্তু এটি আমাকে No route matches {:action=>"myaction", :controller=>"users"}ত্রুটি দেয় ।
লুলালালা

@ লুলালালা অবশ্যই আপনাকে অবশ্যই রুটগুলি সেট করতে হবে। এই ক্ষেত্রে, যেমন:resources :users do collection do get :myaction end end
ট্যাগগিজম

11

আমি এরকম করে দিয়েছি

<%= form_for :user, url: {action: "update", params: {id: @user.id}} do |f| %>

Instanceচ্ছিক প্যারামিটারটি idব্যবহারকারী উদাহরণ আইডি বৈশিষ্ট্যে সেট করুন।


4

বিকল্পভাবে form_tagবাক্য গঠন ব্যবহার করে একই পৌঁছানো যেতে পারে :

form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form")
# => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">'

Http://guides.rubyonrails.org/for_helpers.html#m Multipleple - hashes- in- form - helper - calls এ বর্ণিত


এটি সত্য, তবে প্রশ্নটি কোনও নির্দিষ্ট অবজেক্ট সম্পর্কে জিজ্ঞাসা করে - এই ক্ষেত্রে @user। একটি ব্যবহার form_tagকরে অবজেক্টের বৈশিষ্ট্যগুলি ফর্ম ক্ষেত্রগুলিতে আবদ্ধ করবে না।
ডিলান পিয়ার্স

3

আংশিক ফর্ম রেন্ডার করার সময় আপনি যদি কাস্টম কন্ট্রোলারকে কোনও ফর্মের কাছে যেতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

<%= render 'form', :locals => {:controller => 'my_controller', :action => 'my_action'}%>

এবং তারপরে আংশিক আকারে এই স্থানীয় ভেরিয়েবলটি ব্যবহার করুন:

<%= form_for(:post, :url => url_for(:controller => locals[:controller], :action => locals[:action]), html: {class: ""} ) do |f| -%>

3

নতুন বাক্য গঠন

<%= form_for :user, url: custom_user_path, method: :post do |f|%>
<%end%>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.