Ember-custom-actions插件urlForCustomAction方法失效求助
urlForCustomAction not working in ember-custom-actions v2.1.0 (Ember 3.1.4) Hey there, let’s walk through some common issues that might be preventing your urlForCustomAction override from working as expected:
1. Verify your custom action is defined correctly on the model
First, make sure you’ve set up the custom action in your model to match the actionId your adapter is listening for. For your resetPassword action, your model should look something like this:
import Model from 'ember-data/model'; import { customAction } from 'ember-custom-actions'; export default Model.extend({ resetPassword: customAction({ action: 'resetPassword' }) });
If you don’t explicitly set the action property here, the plugin might use a default value (like the method name, but double-check the v2.1.0 docs to confirm) which wouldn’t trigger your adapter method.
2. Fix the URL format
Your current return value 'domain.com/resetPassword' is missing the protocol (http:// or https://). Without this, Ember will treat it as a relative path appended to your app’s base URL, which is probably not what you want. Update it to:
return 'https://domain.com/resetPassword';
3. Debug if the method is even being called
Add a console.log to your adapter method to confirm it’s firing when you trigger the action:
urlForCustomAction(modelName, id, snapshot, actionId, queryParams) { console.log('urlForCustomAction triggered with actionId:', actionId); return 'https://domain.com/resetPassword'; }
If you don’t see this log in your browser’s dev tools when calling the action, the issue is likely in how you’re invoking the action or how it’s defined on the model. For example, make sure you’re calling it on a model record like:
// Example invocation in a controller/component this.store.findRecord('user', currentUserId).then(user => { user.resetPassword({ email: user.get('email') }); });
4. Confirm adapter inheritance and compatibility
Double-check that your ApplicationAdapter extends from a base adapter that works with ember-custom-actions (like DS.RESTAdapter or DS.JSONAPIAdapter). The AdapterMixin relies on the base adapter’s URL handling logic, so if your ApplicationAdapter is a custom implementation, it might be overriding necessary methods.
Also, since v2.1.0 is an older version of the plugin, verify compatibility with Ember 3.1.4. Check the plugin’s repository for any known bugs or compatibility notes for this specific Ember version.
5. Clear build cache
Sometimes Ember’s build cache can cause outdated code to stick around. Try restarting your ember serve process, or delete the dist folder and rebuild your app to ensure your adapter changes are being picked up.
If none of these steps resolve the issue, it might be worth testing with a minimal reproduction case (a small Ember app with just the plugin and your action) to isolate whether it’s a bug in the plugin or a misconfiguration in your app.
内容的提问来源于stack exchange,提问作者omair azam

