91³Ô¹ÏÍø

Watch CBS News

"It Ends With Us" star Justin Baldoni hopes romance movie can create change: "We need to end the cycle"

The highly anticipated movie "It Ends With Us," which is an adaptation of Colleen Hoover's popular novel, is putting a spotlight on domestic violence.

The movie follows a florist named Lily, played by Blake Lively, who's chasing her dream to open up her own shop. Co-star and director Justin Baldoni plays Ryle, a neurosurgeon who seems like a nice guy, but turns abusive. Baldoni didn't intend on casting himself in the movie, but it was an email from Hoover that encouraged him to take on the role of Ryle.

"I was looking for movies that could be commercial and speak to the human experience," he said. "I had never read a romance novel. By the end of the book, I couldn't even read the text on the page because I was crying so much."

Baldoni said Hoover's novel — which sold 6 million copies — was inspired by her mother, who had a similar real-life experience as someone who endured domestic abuse. 

"She was Lily Bloom and I just thought if this could affect me in this way then I could only imagine what it could do for women and people who are in this situation all over the world," he said. "All of us have a situation or a pattern that we need to end the cycle of."

He hopes the movie helps to create change. Too often, Baldoni said, people ask "why did she stay?" in regards to a woman in an abusive relationship, whether it's in real life or in a book or movie. 

"We need to be asking ourselves, why do men harm? And that was the big thing for me, and what I learned more and more and more of is these women who experience this every single day, there's real love there. There's charm. There's charisma. There's passion. There's this belief they can be better, and it's not so simple."

He worked with an organization called No More that is dedicated to ending domestic and sexual violence, with the goal of creating an honest reflection of what women experience.

Baldoni hopes "It Ends With Us," which premiered Tuesday, helps to create a safer world through compassion and empathy. He said he wants men to go see the romance movie and take accountability in their lives after watching it. 

"I want men to go to the theater and in some ways see a version of themselves. You have two very different characters. Both of them in Atlas and Ryle have had past trauma," he said. "One handles it very different than the other and my other hope is the men who have not done the work, who have not done the work to heal, if they see bits of themselves in Ryle, have a chance to step back and say, 'You know what, I don't want to blow up my life. I don't want to hurt the person i love the most.'"

This story raises issues related to domestic violence. If you need help or would like to learn more about how to help others, please reach out via the National Domestic Violence Hotline at 800-799-SAFE, text "START" to 88788, or visit .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });