link_to, redirect_to және көрсету арасындағы айырмашылық қандай?

Rails бағдарламасында link_to , redirect_to және render арасында негізгі айырмашылықтар туралы шатастырамын. әркім түсіндіре алады.

27

8 жауаптар

link_to сіздің көзқарасыңызда пайдаланылады және сілтеме үшін html кодын жасайды

<%= link_to "Google", "http://google.com" %>

Бұл сіздің пікіріңіз бойынша келесі html болады

Google

redirect_to және рендеринг сұрауыңызға жауап беру үшін контроллерде пайдаланылады. Егер сіздің контроллеріңізге қосылған болса, redirect_to сұранысты жаңа URL мекенжайына бағыттайды

redirect_to "http://google.com"

Сіздің бетіңізге кірген кез-келген Google тиімді түрде қайта бағытталады

render көптеген жолдармен пайдалануға болады, бірақ ол көбінесе html көріністерін көрсету үшін қолданылады.

render "article/show"

Бұл «app/views/article/show.html.erb» көрінісін береді

The following link will explain the redirect_to and the render methods more in detail http://guides.rubyonrails.org/layouts_and_rendering.html

31
қосылды

Құжаттаудан :

Сұрауды қайта бағыттау арқылы көрініс көрсету туралы

. . . render көрсеткендей (немесе басқа актив) жауапты құруда қолданатын Rails-ді айтады. Redirect_to әдісі мүлде басқа нәрсе жасайды: браузерге басқа URL мекен-жайына жаңа сұрау жіберу туралы хабарлайды.

Көріністі көрсетуге қатысты

. . . render: әрекет мақсатты әрекетте ешқандай коды іске қосылмайды. .

Сұрауды қайта бағыттауға қатысты

. . . Сіздің кодыңыз жұмысын тоқтатады және браузерге жаңа сұранысты күтуде.


Негізінде:

link_to is a helper method to generate URLs usually used in your views (.html.erb files)

render tells your controller to render a view without passing any data (say, from a form) to the next controller action.

redirect_to does a 302 page redirect, passing data (say, from a form) to either a controller action on your web app, or an external app (ex: google, facebook, a web article you liked, etc)

9
қосылды

link_to is for use in ERB templates. It outputs a link to a specific path or url.

redirect_to is for use in controllers. It causes the client to request the specified path or url once the controller method exits.

render is also for use in controllers. It causes Rails to render the specified template.

redirect_to and render may only be called once in a given controller method.

3
қосылды

Мен іс жүзінде Бұл туралы блог жазбасын ғана жазған . Ең маңызды биттер төменде көшіріледі (өзгертулермен).

Controller Methods: render vs. redirect_to

render and redirect_to are the two ways that controller actions end (generally speaking). To understand how they work, let's review what controllers do in a Rails app:

  • Пайдаланушы бетке кіруге тырысады ( http://localhost: 3000/books/index.html )
  • Сорғыш астында браузер серверде көрсетілген жолға арналған HTTP сұрауын жібереді ( GET/bookss/index.html)
  • Rails маршруттау жүйесі сол контролер берілген жолға сәйкес келеді )
  • Контроллер кейбір деректерді дайындайды, содан кейін клиентке қайтаруға болатын ( яғни HTTP тақырыбы /

Бұл соңғы қадам render немесе redirect_to немесе егер сіз оны тастап шықсаңыз деп атаған кезде анық көрінеді.

Бұл,

def index
  @books = Book.all
end

сол сияқты

def index
  @books = Book.all
  render :index
end

render :index says, ‘combine the data I've prepared (@books = Book.all) with the books/index.html.erb view template to generate a complete HTML document, then send that back to the client.’

redirect_to @book says, ‘tell the client to start the whole process over again, issuing a new GET request to url_for(@book).

Егер сіз екеуін де тастап кетсеңіз, әрекет әрекеттің өзі сияқты бір атпен үлгі жасайды. Басқаша айтқанда, қалаған көрініс үлгісі сіз оны шығарып жатқан әрекетке сәйкес келмегенде, тек render деп қоңырау шалу керек.

Әрбір контроллер әрекеті тиісті көрініс үлгісіне ие емес екенін ескеріңіз. Жалпы алғанда, #create , #update және #destroy (олар барлық GET ) дерекқорға біраз өзгерістер енгізуге тырысады және одан кейін redirect_to кейбір ресурс (егер ол іске асты болса) немесе көрсету ол сәтсіз аяқталды).

As the official guides explain (emphasis mine),

Бұл екі әдіс [ render және redirect_to ] Action Controllers қолданылған екі негізгі әрекет архетипсін көрсетеді: Get-and-show және < strong> do-and-redirect . Көптеген іс-әрекеттер осы тақырыптардағы өзгерістер болып табылады.


View Methods: render vs. link_to

render is also used within view templates themselves. Rather than generating a complete HTML document, it's used to insert a partial view template into a larger one. Here's the upshot:

  • Стандартты үлгілерге кірістіру үшін жартылай қарап шығу үлгісін файлдарын жасауға болады (оларды модульдік бет құрамдастар деп ойлаңыз).
  • Бөлшектердің файлдық атаулары төменгі сызықпен басталуы керек ( мысалы, _nav.html.erb ).
  • _nav.html.erb ішінара бір қалтадағы көріністен қосқыңыз келсе, render 'nav' пайдаланыңыз.
  • Егер app/views/shared/_nav.html.erb ішіндегі кез-келген көріністен ішінара қосқыңыз келсе, көрсетілсін 'shared/nav' пайдаланыңыз сіздің жоба .
  • Деректерді жартылай ішіне беру, коллекциялық нысаннан бірнеше бөліктерді көрсету және т.б. үшін әртүрлі опциялар мен стильді синтаксистер бар.
  • Нұсқаулықтарды қараңыз.

link_to is just a convenience method for inserting anchor tags (a href tags) into your view templates. This is useful because a lot of the URLs you'll want to link to are other pages within your application, and those URLs can be referenced using objects or "helper methods", like so:

= link_to 'Back', books_path   # renders as Back
= link_to 'View', @book        # renders as View or similar
2
қосылды

Ресми Rails бағыттаушыларынан :

Көргеніңіздей, көрсету Rails-ға жауапты (немесе басқа актив) жауапты құруда қолдануға болатындығын көрсетеді. Redirect_to әдісі мүлде басқа нәрсе жасайды: браузерге басқа URL мекен-жайына жаңа сұрау жіберу туралы хабарлайды.
1
қосылды

Link_to HTML-да пайда болатын белгілі бір URL-ге гиперсілтеме жасайды.

Redirect_to сізді белгілі бір параметрлерге байланысты қай жерде байланыстыруды шешеді. Мысалы, біреу пайдаланушы ретінде тіркелсе, сіз оны баптаулар бетіне көрсетіңіз, басқаша басты бетке қайта бағыттаңыз.

Көрсетілім файлды ашады, оның мазмұнын қабылдайды және бүкіл файлды алушыға жібермес бұрын, бар файлға қойыңыз.

Мен үміттенемін.

1
қосылды

link_to рельстегі пішінде пайдаланылады және html ішіндегі сілтеме элементін жасауға көмекші болып табылады. Ал екіншісі пішінде пайдаланылмайды, ал контроллерлерде қолданылады.

Контроллер әдісі сол бетке байланыстырылған болса, сіз render бетін. Мысалы: «жаңа» деп аталатын «жаңа элемент» бетін көрсету керек. Олар жаңадан жасалған өтінішті орындады.

redirect is used for exactly that - redirecting. For example, if you try accessing a page where you have to be logged in, you redirect the user to the login page. So, redirects basically spawn a new request.

1
қосылды

link_to will output a standard html anchor=a link (link_to documentation)

redirect_to is commonly used for page responses such as update and delete. It will take the parameters you give it and will direct your page appropriately. (redirect_to documentation)

render is used for loading partials or loading specific .erb files into others. (render documentation)

There are a bunch of examples on this rails guide which should explain render and redirect_to. link_to is pretty different from rendering and redirect_to

1
қосылды