উত্তর:
সহায়কদের কল করতে, helper
অবজেক্টটি ব্যবহার করুন :
$ ./script/console
>> helper.number_to_currency('123.45')
=> "R$ 123,45"
আপনি যদি এমন কোনও সহায়ক ব্যবহার করতে চান যা ডিফল্টরূপে অন্তর্ভুক্ত না হয় (বলুন, কারণ আপনি অপসারণ helper :all
করেছেন ApplicationController
), কেবল সহায়ককে অন্তর্ভুক্ত করুন।
>> include BogusHelper
>> helper.bogus
=> "bogus output"
নিয়ন্ত্রণকারীদের সাথে সম্পর্কিত হিসাবে , আমি নিকের উত্তরটি উদ্ধৃত করেছি :
> app.get '/posts/1' > response = app.response # you now have a rails response object much like the integration tests > response.body # get you the HTML > response.cookies # hash of the cookies # etc, etc
url_for
কনসোল থেকে কল করা দরকার । এটি করার জন্য আমি করেছিapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
একটি ফাংশন বলা সংজ্ঞায়িত protect_against_forgery?
কনসোল মধ্যে যে আয়false
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
।
স্ক্রিপ্ট / কনসোল থেকে একটি নিয়ামক ক্রিয়াকলাপ কল করার এবং প্রতিক্রিয়া অবজেক্টটি দেখার / পরিচালনা করার সহজ উপায় হ'ল:
> app.get '/posts/1'
> response = app.response
# You now have a Ruby on Rails response object much like the integration tests
> response.body # Get you the HTML
> response.cookies # Hash of the cookies
# etc., etc.
অ্যাপ্লিকেশন অবজেক্ট একটি উদাহরণ অ্যাকশনকন্ট্রোলার :: ইন্টিগ্রেশন :: সেশনের
এটি আমার জন্য রেল অন ২.১ এবং ২.৩ ব্যবহার করে এবং আমি পূর্ববর্তী সংস্করণগুলি চেষ্টা করিনি।
আপনার যদি কনসোল থেকে পরীক্ষা করতে হয় (R.১ এবং ৪.১ রেলের উপর রুবিতে পরীক্ষা করা হয়েছে):
কল কন্ট্রোলার ক্রিয়াকলাপ:
app.get '/'
app.response
app.response.headers # => { "Content-Type"=>"text/html", ... }
app.response.body # => "<!DOCTYPE html>\n<html>\n\n<head>\n..."
অ্যাপ্লিকেশন নিয়ন্ত্রণকারী পদ্ধতি:
foo = ActionController::Base::ApplicationController.new
foo.public_methods(true||false).sort
foo.some_method
রুট সহায়ক:
app.myresource_path # => "/myresource"
app.myresource_url # => "http://www.example.com/myresource"
সহায়কগুলি দেখুন:
foo = ActionView::Base.new
foo.javascript_include_tag 'myscript' #=> "<script src=\"/javascripts/myscript.js\"></script>"
helper.link_to "foo", "bar" #=> "<a href=\"bar\">foo</a>"
ActionController::Base.helpers.image_tag('logo.png') #=> "<img alt=\"Logo\" src=\"/images/logo.png\" />"
এভাবে অনুবাদ করে:
views = Rails::Application::Configuration.new(Rails.root).paths["app/views"]
views_helper = ActionView::Base.new views
views_helper.render 'myview/mytemplate'
views_helper.render file: 'myview/_mypartial', locals: {my_var: "display:block;"}
views_helper.assets_prefix #=> '/assets'
অ্যাক্টিভসপোর্ট পদ্ধতি:
require 'active_support/all'
1.week.ago
=> 2013-08-31 10:07:26 -0300
a = {'a'=>123}
a.symbolize_keys
=> {:a=>123}
লিবি মডিউল:
> require 'my_utils'
=> true
> include MyUtils
=> Object
> MyUtils.say "hi"
evaluate: hi
=> true
কনসোলের মাধ্যমে এটি করার একটি উপায় এখানে রয়েছে:
>> foo = ActionView::Base.new
=> #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]>
>> foo.extend YourHelperModule
=> #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]>
>> foo.your_helper_method(args)
=> "<html>created by your helper</html>"
এর নতুন উদাহরণ তৈরি করা ActionView::Base
আপনাকে সেই সাধারণ দৃশ্য পদ্ধতিতে অ্যাক্সেস দেয় যা আপনার সহায়ক সম্ভবত ব্যবহার করে। তারপরে প্রসারিতকরণগুলি YourHelperModule
এর পদ্ধতিগুলিকে আপনার অবজেক্টের সাথে মিশিয়ে দেয় যাতে আপনাকে তাদের ফেরতের মানগুলি দেখতে দেয়।
পদ্ধতিটি যদি পদ্ধতি হয় POST
তবে:
app.post 'controller/action?parameter1=value1¶meter2=value2'
(এখানে প্যারামিটারগুলি আপনার প্রয়োগযোগ্যতার অনুযায়ী হবে))
অন্যথায় যদি এটি GET
পদ্ধতি হয় তবে:
app.get 'controller/action'
app.methods.grep(/_path/)
:)
controler/action
, আপনার রুটগুলির উপর নির্ভর করে, যেমন হতে পারে /users/all
এবং ম্যাপ করতে পারে Api::UsersController#index
:)
rake routes
। :)
এটি করার আরেকটি উপায় হ'ল রুবি অন রেলস ডিবাগারটি ব্যবহার করা। ডিবাগিংয়ের বিষয়ে একটি রুবি অন রেলে রয়েছেHttp://guides.rubyonrails.org/debugging_rails_applications.html
মূলত, -u বিকল্পটি দিয়ে সার্ভারটি শুরু করুন:
./script/server -u
এবং তারপরে আপনার স্ক্রিপ্টে একটি ব্রেকপয়েন্ট inোকান যেখানে আপনি নিয়ন্ত্রক, সহায়তাকারী ইত্যাদির অ্যাক্সেস পেতে চান where
class EventsController < ApplicationController
def index
debugger
end
end
এবং যখন আপনি একটি অনুরোধ করবেন এবং কোডটির সেই অংশটি হিট করবেন, সার্ভার কনসোল একটি প্রম্পট ফিরিয়ে দেবে যেখানে আপনি কমান্ড প্রম্পট থেকে অনুরোধ করতে পারবেন, অবজেক্টগুলি দেখতে পারেন ইত্যাদি। শেষ হয়ে গেলে, সম্পাদনা চালিয়ে যেতে কেবল 'cont' টাইপ করুন। বর্ধিত ডিবাগিংয়ের জন্য বিকল্পগুলিও রয়েছে তবে এটি কমপক্ষে আপনাকে শুরু করা উচিত।
উদাহরণস্বরূপ রিফাইনারি ব্যবহার করে কীভাবে একটি অনুমোদনযোগ্য পোষ্ট অনুরোধ করবেন:
# Start Rails console
rails console
# Get the login form
app.get '/community_members/sign_in'
# View the session
app.session.to_hash
# Copy the CSRF token "_csrf_token" and place it in the login request.
# Log in from the console to create a session
app.post '/community_members/login', {"authenticity_token"=>"gT7G17RNFaWUDLC6PJGapwHk/OEyYfI1V8yrlg0lHpM=", "refinery_user[login]"=>'chloe', 'refinery_user[password]'=>'test'}
# View the session to verify CSRF token is the same
app.session.to_hash
# Copy the CSRF token "_csrf_token" and place it in the request. It's best to edit this in Notepad++
app.post '/refinery/blog/posts', {"authenticity_token"=>"gT7G17RNFaWUDLC6PJGapwHk/OEyYfI1V8yrlg0lHpM=", "switch_locale"=>"en", "post"=>{"title"=>"Test", "homepage"=>"0", "featured"=>"0", "magazine"=>"0", "refinery_category_ids"=>["1282"], "body"=>"Tests do a body good.", "custom_teaser"=>"", "draft"=>"0", "tag_list"=>"", "published_at(1i)"=>"2014", "published_at(2i)"=>"5", "published_at(3i)"=>"27", "published_at(4i)"=>"21", "published_at(5i)"=>"20", "custom_url"=>"", "source_url_title"=>"", "source_url"=>"", "user_id"=>"56", "browser_title"=>"", "meta_description"=>""}, "continue_editing"=>"false", "locale"=>:en}
আপনি যদি কোনও ত্রুটি পান তবে আপনি এটি দরকারীও দেখতে পাবেন:
app.cookies.to_hash
app.flash.to_hash
app.response # long, raw, HTML
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
রুবেল অন রেল 3 এ, চেষ্টা করুন:
session = ActionDispatch::Integration::Session.new(Rails.application)
session.get(url)
body = session.response.body
শরীরে URL টির HTML থাকবে।
রুবেল অন রিয়েল 3 এ কোনও মডেল থেকে কীভাবে রুট করবেন এবং প্রেরণ করবেন (প্রেরণ)
পূর্ববর্তী উত্তরগুলি সাহায্যকারীদের কল করছে, তবে নিম্নলিখিতগুলি নিয়ন্ত্রণকারী পদ্ধতিগুলি কল করার জন্য সহায়তা করবে। আমি এটি রুবে অন রেলে ২.৩.২ এ ব্যবহার করেছি।
প্রথমে আপনার .irbrc ফাইলটিতে নিম্নলিখিত কোড যুক্ত করুন (যা আপনার হোম ডিরেক্টরিতে থাকতে পারে)
class Object
def request(options = {})
url=app.url_for(options)
app.get(url)
puts app.html_document.root.to_s
end
end
তারপরে রুবে অন রেলস কনসোলে আপনি এমন কিছু টাইপ করতে পারেন ...
request(:controller => :show, :action => :show_frontpage)
... এবং এইচটিএমএলটি কনসোলে ফেলে দেওয়া হবে।
যে কোনও নিয়ামক ক্রিয়া বা দেখার অভ্যন্তরে, আপনি কনসোল পদ্ধতিতে কল করে কনসোলটি শুরু করতে পারেন ।
উদাহরণস্বরূপ, একটি নিয়ামক মধ্যে:
class PostsController < ApplicationController
def new
console
@post = Post.new
end
end
বা একটি দৃষ্টিতে:
<% console %>
<h2>New Post</h2>
এটি আপনার দর্শনের অভ্যন্তরে একটি কনসোল রেন্ডার করবে। কনসোল কলটির অবস্থান সম্পর্কে আপনার প্রয়োজন নেই; এটির অনুরোধের জায়গায় কিন্তু আপনার এইচটিএমএল বিষয়বস্তুর পাশে রেন্ডার হবে না।
দেখুন: http://guides.rubyonrails.org/debugging_rails_applications.html
নিয়ন্ত্রকদের জন্য, আপনি রুবে অন রেলস কনসোলে একটি নিয়ামক বস্তু ইনস্ট্যান্ট করতে পারেন।
উদাহরণ স্বরূপ,
class CustomPagesController < ApplicationController
def index
@customs = CustomPage.all
end
def get_number
puts "Got the Number"
end
protected
def get_private_number
puts 'Got private Number'
end
end
custom = CustomPagesController.new
2.1.5 :011 > custom = CustomPagesController.new
=> #<CustomPagesController:0xb594f77c @_action_has_layout=true, @_routes=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil>
2.1.5 :014 > custom.get_number
Got the Number
=> nil
# For calling private or protected methods,
2.1.5 :048 > custom.send(:get_private_number)
Got private Number
=> nil
def show response = @user.contributions end
আমি কীভাবে চলকটিকে ওভাররাইড করব @user
?
যদি আপনি নিজের সহায়তাকারী যুক্ত করেছেন এবং আপনি এর পদ্ধতিগুলি কনসোলে উপলভ্য হতে চান তবে করুন:
include YourHelperName
method_name(args)
।উদাহরণ: বলুন যে my_method
'অ্যাপ / হেল্পার্স / মাই_হেল্পার.আরবি'তে আপনার মাইহেল্পার (একটি পদ্ধতি সহ ) রয়েছে, তারপরে কনসোলে করুন:
include MyHelper
my_helper.my_method
app.get
(একটি থ্রেড ত্রুটি ঘটে)। আমি সিস্টেমে ফ্লাশ করে আরও বেশি কিছু অর্জন করতে পারি তার কোন উপায় আছে কি?